还是取决于?
例如虚构的类:
public class Worker {
private boolean paused;
public boolean isPaused() {
return paused;
}
public void onIteration() {
if (!paused) {
doIteration();
}
}
}
或者如果我在上面的示例中使用if isPaused() { }
会更好吗?
关于我一直必须使用的内容,是否有任何规则?
答案 0 :(得分:3)
我会使用 getter ,因为它决定了内部逻辑。在你的情况下,没有太多的逻辑,你只需返回值。
但请考虑将isPaused
更改为:
public boolean isPaused() {
return isReallyPaused(paused);
}
我更喜欢使用 getters 的另一个原因,
如果是int
,我就不会错误地更改它,而不是写if(myInt == 5)
(错误地可能是=
),我会使用if(getMyInt() == 5)
。
答案 1 :(得分:1)
一般来说,总是使用吸气剂。 为什么?
让我们说你把它变成了一个公共成员,在这个课程的5次使用之后,你决定现在需要为此添加更多的逻辑。
现在它只在A和B时暂停 也许用户没有权限查看isPauesd是真还是假。
如何在不破坏班级外部用法的情况下改变这种情况?
你不能,但如果你使用吸气剂那么它不是问题:
public boolean isPaused() {
if (hasPermissions){
return isPaused;
}
throw newPermissionException();
}
我改变了代码而没有破坏用法。 事实上,这个班级的用户甚至不知道这种变化。
这称为封装。