我要說的第二個作爲方法名被更明確地描述的動作,而首先是有點曖昧。
對這種標誌的通常的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.第一種方法就像是切換變量的狀態,其中方法是精確啓用或禁用布爾的狀態 –