2011-06-16 91 views
3

我有這個代碼。 true_varother_true_varboolean值。四個條件分支是不同的。最乾淨的方式來寫2布爾條件(4分支)

if true_var && other_true_var: 
    # do something 0 
else if true_var && not other_true_var: 
    # do something 1 
else if not true_var && other_true_var: 
    # do something else 
else: 
    # both are false, do a crazy thing 

有沒有「接受」的方式來寫這個?我可以將所有條件語句放入返回布爾值的方法中,但似乎在頂部。

回答

2

我會做的最小數量的測試如下:

if (A) 
{ 
    if (B) { // case 0 } 
    else { // case 1 } 
} 
else 
{ 
    if (B) { // something else } 
    else {/crazy } 
} 
0

這似乎是正確的。

它可以去任何順序,但是這似乎是一個正確的方式來做到這一點

0

如果某些分支身體很小我寧願將它們放在頂部,這使得代碼更具可讀性。如果有條件的「自然」順序,請遵循該條件。

如果你真的關心速度,你可能想把最可能的分支放在最上面。

0

所提供的代碼並沒有真正告訴我們關於布爾值及其語義的任何信息。給定兩個無意義的任意獨立布爾值,所提供的代碼很好。

但我們都不使用無意義的任意變量,或者至少我們都不應該。有一個原因是& b導致一個代碼路徑,並且&!b到另一個等等。對於& b是什麼意思?命名。與其他人一樣。也許事實證明,某些設置具有相關行爲,並且您可以重新調整代碼以反映這一點。

由於缺乏提供的變量的含義,我們無法真正回答所提出的問題。當有意義時,你可以做出有意義的選擇。

相關問題