我正在制作一个非常简单的类来表示 3D 空间中的位置。
目前,我只是让用户直接访问和修改个人X
,Y
和Z
值。换句话说,它们是公共成员变量。
template <typename NumericType = double>
struct Position
{
NumericType X, Y, Z;
// Constructors, operators and stuff...
};
这背后的原因是,因为NumericType
是一个模板参数,我不能依赖有一种体面的方法来检查值的健全性。(我怎么知道用户不想用负值表示位置?)因此,添加 getter 或 setter 来使界面复杂化是没有意义的,直接访问应该因其简洁而受到青睐。
Pos.X = Pos.Y + Pos.Z; // Versus...
Pos.SetX(Pos.GetY() + Pos.GetZ());
这是良好实践的一个好的例外吗?我的代码的(假设的)未来维护者会追捕我并打我的脸吗?