如果替代函数名称使 API 更明显,那么放弃 getter 和 setter 的“getMyValue()”和“setMyValue()”模式是否合适?
例如,假设我在 C++ 中有这个类:
public class SomeClass {
private:
bool mIsVisible;
public:
void draw();
void erase();
}
我可以像这样添加函数来获取/设置“mIsVisible”:
bool getVisible() { return mIsVisible; };
void setVisible(bool visible) {
if (!mIsVisible && visible) {
draw();
} else if (mIsVisible && !visible) {
erase();
}
mIsVisible = visible;
}
但是,同样可以使用以下方法:
bool isVisible() { return mIsVisible; };
void show() {
if (!mIsVisible) {
mIsVisible = true;
draw();
}
}
void hide() {
if (mIsVisible) {
mIsVisible = false;
erase();
}
}
简而言之,最好有一个“setVisible(bool)”方法还是一对“show()”和“hide()”方法?有没有约定,还是纯粹是主观的东西?