我要说的第二个作为方法名被更明确地描述的动作,而首先是有点暧昧。
对这种标志的通常的Java模式(虽然我觉得这种风格/惯例可外出时尚的 - 将是有趣的,如果有人更了解可以给一些这方面的见解)是使用isEnabled
和setEnabled()
,这是比第一个更明确的,但在代码减少冗余:
private boolean isEnabled;
private void setEnabled(boolean isEnabled) {
this.isEnabled = isEnabled;
}
我也建议制作方法,因为他们随后将是线程安全的;机体将以原子方式执行,确保在进入国旗时没有任何恶劣的竞赛条件。
private boolean flag;
public synchronized void enable() {
flag = true;
}
public synchronized void disable() {
flag = false;
}
另一种选择,提供原子性,这可能是更复杂的方法需要访问的变量更加有用,是使用AtomicBoolean
其强制执行的原子在其存取方法实现:
private AtomicBoolean flag;
public void enable() {
flag.set(true);
}
public void disable() {
flag.set(false);
}
原子变量在这个Java教程中讨论: http://docs.oracle.com/javase/tutorial/essential/concurrency/atomicvars.html
第二个选项看起来像一个有效的方法,恕我直言。 –
第一个版本比较好,但是命名为'setEnabled(boolean enabled)'会更有意义 – erosb
1.第一种方法就像是切换变量的状态,其中方法是精确启用或禁用布尔的状态 –