C語言 衛語句

2021-10-07 02:19:04 字數 1246 閱讀 2211

函式中的條件邏輯使人難以看清正常的執行途徑。使用衛語句表現所有特殊情況。

動機:條件表示式通常有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條分支都是正常行為,就應該...