縮排波動拳!
函式中的條件邏輯使人難以看清正常的執行途徑。使用衛語句表現所有特殊情況。動機:條件表示式通常有2種表現形式。第一:所有分支都屬於正常行為。第二:條件表示式提供的答案中只有一種是正常行為,其他都是不常見的情況。
這2類條件表示式有不同的用途。如果2條分支都是正常行為,就應該使用形如if……else……的條件表示式;如果某個條件極其罕見,就應該單獨檢查該條件,並在該條件為真時立刻從函式中返回。這樣的單獨檢查常常被稱為「衛語句」。
replace nested conditional with guard clauses (以衛語句取代巢狀條件表示式)的精髓是:給某個分支以特別的重視。它告訴閱讀者:這種情況很罕見,如果它真的發生了,請做一些必要的整理工作,然後退出。
if(condition)
// 接著寫else的業務邏輯**;
衛語句就是把複雜的條件表示式拆分成多個條件表示式,比如乙個很複雜的表示式,巢狀了好幾層的if - then-else語句,轉換為多個if語句,實現它的邏輯,這多條的if語句就是衛語句.
if(obj != null)
轉換成衛語句以後的**如下:
if(obj == null)
dosomething();
有時候條件式可能出現在巢狀n次才能真正執行,其他分支只是簡單報錯返回的情況,對於這種情況,應該單獨檢查報錯返回的分支,當條件為真時立即返回,這樣的單獨檢查就是衛語句(guard clauses).衛語句可以把我們的視線從異常處理中解放出來,集中精力到正常處理的**中。
修改前
void func(void)
else
else
}
修改後
void func()
if(isworktime())
rest();
}
修改前
double getpayamount()
else else else }}
return result;
}
修改後
double getpayamount()
if (isseparated())
if (isretired())
return normalpayamount();
}
函式中的if條件邏輯使人難以看清正常的分支執行路徑。使用衛語句表現所有特殊情況。
所謂衛語句,如果某個條件極其罕見,就應該單獨檢查該條件,並在該條件為真時立刻從函式中返回。這樣的單獨檢查常常被稱為「衛語句」。
4 5 以衛語句取代巢狀條件式
原 1 double getpayamount 28 else914 else 1520 else 2124 25 2627return result 28 以衛語句取代巢狀條件式 1 double getpayamount 27 if isseparated 811 if isretired 12...
C語言 衛語句
函式中的條件邏輯使人難以看清正常的執行途徑。使用衛語句表現所有特殊情況。動機 條件表示式通常有2種表現形式。第一 所有分支都屬於正常行為。第二 條件表示式提供的答案中只有一種是正常行為,其他都是不常見的情況。這2類條件表示式有不同的用途。如果2條分支都是正常行為,就應該使用形如if else 的條件...
C語言 if else語句巢狀
time limit 3000ms memory limit 10000kb accepted 5931 total submissions 11733 企業發放的獎金根據利潤提成。利潤 i 低於或等於10萬元時,獎金可提10 利潤高於10萬元,低於20萬元時,低於10萬元的部分按10 提成,高於1...