條件表示式通常有兩種表現形式。
這兩類條件表示式有不同的用途。如果所有分支都是正常行為,就應該使用形如if…..else…..的條件表示式;如果某個條件極其罕見,就應該單獨檢查該條件,並在該條件為真時立刻從函式中返回。這樣的單獨檢查常常被稱為「衛語句」。
replace nested conditional with guard clauses (以衛語句取代巢狀條件表示式)的精髓是:給某個分支以特別的重視。它告訴閱讀者:這種情況很罕見,如果它真的發生了,請做一些必要的整理工作,然後退出。
「每個函式只能有乙個入口和乙個出口」的觀念,根深蒂固於某些程式設計師的腦海裡。現今的程式語言都會強制保證每個函式只有乙個入口,至於「單一出口」規則,其實不是那麼有用。保持**清晰才是最關鍵的:如果單一出口能使這個函式更清晰易讀,那麼就使用單一出口;否則就不必這麼做。
把複雜的條件表示式拆分成多個條件表示式
比如乙個很複雜的表示式,巢狀了好幾層的if - else語句,轉換為多個if語句,實現它的邏輯,這多條的if語句就是衛語句。
有時候條件式可能出現在巢狀n次才能真正執行,其他分支只是簡單報錯返回的情況,對於這種情況,應該單獨檢查報錯返回的分支,當條件為真時立即返回,這樣的單獨檢查就是衛語句(guard clauses)。衛語句可以把我們的視線從異常處理中解放出來,集中精力到正常處理的**中。
例如下列**:
void func(void)
else else
}}
使用衛語句替換以後
void func()
if(isworktime())
rest(); // 核心語句
}
SQL Server控制語句的基本應用
1.語句塊 begin end 語句塊語法如下 begin nb程式設計客棧sp end begin end用來設定乙個語句塊,可以將多條transact sql語句封裝起來構成乙個語句塊,在處理時,整個語句塊被視為一條語句。begin end經常用在條件語句中,如if else 或while迴圈中...
Tomcat的基本應用
1 測試tomcat 啟動tomcat 在瀏覽器中輸入 2 tomcat的管理 tomcat 的服務管理頁面是 的應用程式管理頁面 3 發布應用程式 jsp應用程式 war有二種方式,一種是按一定的目錄結構組織檔案,一種是乙個字尾為 war的壓縮包,因此它的部署方式也有兩種 1 在瀏覽器中輸入 就會...
QTreeWidget的基本應用
基於qt 4.8.4,vs2010 官方文件 qtreewidget控制項用於顯示樹形結構。在程式中使用它,需要做兩件事 1.定義事件和響應函式 2.樹結構資料的輸入輸出 1.定義事件和響應函式 在ui編輯器中建立乙個qtreewidget控制項,在 訊號 槽編輯器 中為控制項新增訊號 接收者 槽。...