Ant*_*Ant 7 c++ getter setter coding-style
如果替代函数名称使API更明显,放弃getter和setter的"getMyValue()"和"setMyValue()"模式是否合适?
例如,假设我在C++中有这个类:
public class SomeClass {
private:
bool mIsVisible;
public:
void draw();
void erase();
}
Run Code Online (Sandbox Code Playgroud)
我可以添加函数来获取/设置"mIsVisible",如下所示:
bool getVisible() { return mIsVisible; };
void setVisible(bool visible) {
if (!mIsVisible && visible) {
draw();
} else if (mIsVisible && !visible) {
erase();
}
mIsVisible = visible;
Run Code Online (Sandbox Code Playgroud)
}
Run Code Online (Sandbox Code Playgroud)
但是,同样可以使用以下方法:
bool isVisible() { return mIsVisible; };
void show() {
if (!mIsVisible) {
mIsVisible = true;
draw();
}
}
void hide() {
if (mIsVisible) {
mIsVisible = false;
erase();
}
}
Run Code Online (Sandbox Code Playgroud)
简而言之,有一个"setVisible(bool)"方法,还是一对"show()"和"hide()"方法更好?有会议,还是纯粹主观的?
Rob*_*lls 13
在Pragmatic Programmers网站上阅读文章" Tell,Do not Ask ",我想你会看到第二个例子是要走的路.
基本上,你不应该通过你的第一个例子隐含的代码传播逻辑,即:
在这个例子中你给,show()
并hide()
让有很大的意义,至少对我来说.
另一方面,如果你有一个属性skinPigment
而你决定调用函数tanMe()
,makeAlbino()
这将是一个非常糟糕,非显而易见的选择.
这是主观的,你必须尝试思考你的用户(使用这个类的人)的想法.无论你决定哪种方式,它都应该是显而易见的,并且有充分的记录.