函式中的條件邏輯使人難以看清正常的執行途徑。使用衛語句表現所有特殊情況。
動機:條件表示式通常有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).衛語句可以把我們的視線從異常處理中解放出來,集中精力到正常處理的**中。
示例1修改前
void func(void)
else
else
} 修改後void func()
if(isworktime())
rest();
} 示例2
修改前double getpayamount()
else else else }}
return result;
}修改後
double getpayamount()
if (isseparated())
if (isretired())
return normalpayamount();}總結
函式中的if條件邏輯使人難以看清正常的分支執行路徑。使用衛語句表現所有特殊情況。
所謂衛語句,如果某個條件極其罕見,就應該單獨檢查該條件,並在該條件為真時立刻從函式中返回。這樣的單獨檢查常常被稱為「衛語句」。
————————————————
C語言 衛語句的解決處理方法
在程式設計過程中,條件式通常有兩種呈現方式,第一種形式是 所有的分支語句都屬於正常的行為,第二種形式則是 條件式提供的答案只有一種是正常行為,其他都是不常見的情況.例如 double getpayamount return result 這兩類條件式有不同的用途,這一點應該通過 表現出來,如果兩條分...
C語言 衛語句取代巢狀條件式
縮排波動拳!函式中的條件邏輯使人難以看清正常的執行途徑。使用衛語句表現所有特殊情況。動機 條件表示式通常有2種表現形式。第一 所有分支都屬於正常行為。第二 條件表示式提供的答案中只有一種是正常行為,其他都是不常見的情況。這2類條件表示式有不同的用途。如果2條分支都是正常行為,就應該使用形如if el...
衛語句學習
1.使用衛語句取代巢狀表示式 函式中的條件邏輯使人難以看清正常的執行途徑。使用衛語句表現所有特殊情況。動機 條件表示式通常有2種表現形式。第一 所有分支都屬於正常行為。第二 條件表示式提供的答案中只有一種是正常行為,其他都是不常見的情況。這2類條件表示式有不同的用途。如果2條分支都是正常行為,就應該...