Max*_*xpm 19 c++ oop encapsulation getter-setter member-variables
我正在制作一个非常简单的类来表示3D空间中的位置.
目前,我只是让用户访问和修改个人X
,Y
和Z
值直接.换句话说,它们是公共成员变量.
template <typename NumericType = double>
struct Position
{
NumericType X, Y, Z;
// Constructors, operators and stuff...
};
Run Code Online (Sandbox Code Playgroud)
这背后的原因是,因为NumericType
是一个模板参数,我不能依赖于有一个体面的方法来检查值的理智.(我怎么知道用户不希望用负值表示位置?)因此,添加getter或setter以使接口复杂化是没有意义的,因为简洁直接访问应该受到青睐.
Pos.X = Pos.Y + Pos.Z; // Versus...
Pos.SetX(Pos.GetY() + Pos.GetZ());
Run Code Online (Sandbox Code Playgroud)
这是一个好的例外吗?我的代码的(假设的)未来维护者是否会追捕我并打击我的脸?
And*_*ron 16
背后使用getter和setter的想法是能够比执行其他行为只是设置一个值.建议采用这种做法,因为您可能希望在课堂上进行多种改进.
使用setter的常见原因(可能更多):
如果您认为您的代码永远不会使用或要求任何上述代码,那么按原则编写getter和setter绝对不是一个好习惯.它只会导致代码膨胀.
编辑:与流行的看法相反,使用getter和setter不太可能帮助你改变类的内部表示,除非这些更改很小.特别是个别成员的存在者使得这种变化非常困难.
归档时间: |
|
查看次数: |
1616 次 |
最近记录: |