2009-12-16 26 views
2

正如話題所述,有時這些問題會相互衝突。例如...名義案例優先vs.積極布爾表達式

在這種情況下,標稱情況是第一個,但表達式是負的。

if (!foo.IsDead()) { 
    DoThis(); 
} else { 
    DoThat(); 
} 

在這種情況下,表達式是正數,但名義大小寫是最後一個。

if (foo.IsDead()) { 
    DoThat(); 
} else { 
    DoThis(); 
} 

當然,第三種選擇是將IsDead函數翻轉爲IsAlive()。當他們在編碼中遇到這三種選擇時,我想聽到別人的想法。你是用名義上的,積極的,還是通過翻轉布爾本身來解決整個問題。

+0

配置文件優先,如有必要,稍後優化。 – 2009-12-16 20:25:31

回答

3

我更喜歡選項二,因爲它更清晰/易於閱讀。

但你要前往我懷疑的宗教戰爭領土。

在翻轉函數的名稱方面,我只會改變,如果isAlive()是最可能的結果。也就是說,如果最可能的結果是您的布爾表達式等於true,那麼我認爲代碼更清晰。最不可能的(錯誤)應該排在第二位。它是50/50,我不擔心。

+0

這不是50/50。因此,當使用布爾返回值編寫函數時,返回的值應該是標稱值就是您說的。 – Anonymous 2009-12-16 03:47:52

+0

+1有關宗教戰爭的警告! :P – GrayWizardx 2009-12-16 03:51:38

1

你打算檢查更多 - 正在alivedead。如果比例尺對其中的一個顯着傾斜,則應相應地命名謂詞方法。

至於首先放置名義或正面的情況下,我會去與名義。要想知道!dead是否還活着,反之亦然並不困難,但總能看到主要的執行流程以及後面的例外情況,這總是很好的。

0

我認爲這取決於交互的頻率是多少。總的來說,我被告知,你應該總是把最頻繁的或最有可能的情況作爲if情況的真實評估,並將後續的情況放在else塊中。我認爲這是個人選擇的問題。

1

在安排if語句時,如果我知道它,我會按照頻率的順序進行排列。這肯定會提高性能。

當處理檢查錯誤然後相應進展的代碼時,我總是將錯誤處理代碼放在最後一條if語句中。這有助於代碼可讀性。

關於你的第三個選項,我只確保方法名稱本身不是負數,比如isNotAlive(),否則我會很好。

您可能想閱讀Code Complete的第15.1節(如果陳述)。本節討論一個幾乎類似的問題。

+0

負號中的名稱+1 isNotAlive()... arrrrrrggggghhhhh – pmg 2009-12-16 12:32:17

0

我不喜歡這樣的事情..

if (IsDead()){} 
    else 
    { 
     //do something. 
    } 

,所以我會更喜歡前者。