Я делаю очень простой класс для представления позиций в трехмерном пространстве.
В настоящее время я разрешаю пользователю напрямую получать и изменять индивидуальные значения X
, Y
и Z
. Другими словами, они являются переменными public member.
template <typename NumericType = double>
struct Position
{
NumericType X, Y, Z;
// Constructors, operators and stuff...
};
Обоснование заключается в том, что, поскольку NumericType
является параметром шаблона, я не могу полагаться на то, что есть достойный способ проверить значения для здравомыслия. (Как я узнаю, что пользователь не хочет, чтобы позиция была представлена с отрицательными значениями?) Поэтому нет смысла добавлять геттеры или сеттеры для усложнения интерфейса, а прямой доступ должен быть одобрен для его краткости.
Pos.X = Pos.Y + Pos.Z; // Versus...
Pos.SetX(Pos.GetY() + Pos.GetZ());
Это хорошее исключение из хорошей практики? Будет ли (гипотетический) будущий сопровождающий моего кода искать меня и ударить меня в лицо?