鮑勃大爺:將if/else中每個條件變為邏輯並列互拆而不依賴執行順序。
當您編寫一條if / else語句鏈時,瞭解並評估執行時順序的依賴性是明智的。將每個條件構造為邏輯互斥而非依賴於執行順序可能是明智的。
新開發人員要學習的第一個概念是if / else語句。if / else語句是執行條件邏輯的最常見方法。但是,複雜的巢狀if / else語句可能很快成為認知負擔,並損害程式的可讀性
Guard Clauses:利用從函式中儘早返回(或繼續執行迴圈)的功能,使多維巢狀條件變成一維,不要使用if / else鏈,我們只是在每個條件塊末尾從函式中提前返回。
Go中的錯誤處理自然會鼓勵開發人員使用保護子句。
下面是誇張巢狀:
function getInsuranceAmount(status) { let amount; if (!status.hasInsurance()){ amount = 1; } else { if (status.isTotaled()){ amount = 10000; } else { if (status.isDented()){ amount = 160; if (status.isBigDent()){ amount = 270; } } else { amount = 0 } } } return amount; } |
使用Guard Clauses改寫成:
function getInsuranceAmount(status) { if (!status.hasInsurance()){ return 1; } if (status.isTotaled()){ return 10000; } if (!status.isDented()){ return 0; } if (status.isBigDent()){ return 270; } return 160; } |
在第一個示例中,如果開發人員試圖弄清楚何時返回270,則他們需要考慮邏輯樹中的每個分支,並試圖記住哪些情況重要而哪些情況無關。使用Guard Clauses提供的一維結構,就像按順序逐步處理每種情況一樣簡單。
相關文章
- 如何使用ReentrantLock的條件變數,讓多個執行緒順序執行?ReentrantLock變數執行緒
- Oracle中where子句中條件的物理執行順序Oracle
- SQL Select語句邏輯執行順序SQL
- connect by與where條件執行順序問題
- SELECT語句邏輯執行順序 你知道嗎?
- 【Oracle】where條件執行順序(上篇的問題延伸)Oracle
- Pytest 順序執行,依賴執行,引數化執行
- 鮑勃大爺:SOLID概念解釋Solid
- 將字串中的每個單詞順序進行顛倒,單詞還是原來的單詞,字母順序不發生變化字串
- MySQL自定義變數執行順序MySql變數
- MySQL之SQL邏輯查詢順序MySql
- 查詢處理的邏輯順序
- 如何在Kafka中將嚴格順序與大規模並行性結合? - EmilKafka並行
- 鮑勃大爺:物件是更關注行為,資料庫表則是簡單的資料結構,if/else/switch有使用依據物件資料庫資料結構
- MySQL筆記 10 條件邏輯MySql筆記
- 計算機程式的思維邏輯 (9) - 條件執行的本質計算機
- Sql執行順序SQL
- Java中如何保證執行緒順序執行Java執行緒
- 多執行緒06:條件變數執行緒變數
- 你瞭解一條sql的執行順序嗎SQL
- 金字塔原理(6)- 確定邏輯順序
- 多執行緒(2)-執行緒同步條件變數執行緒變數
- JavaScript執行順序分析JavaScript
- 任務執行順序
- for語句執行順序
- JavaScript的執行順序JavaScript
- laravel Event執行順序Laravel
- JDBC中PreparedStatement介面的執行邏輯JDBC
- mySQL 執行語句執行順序MySql
- C#中Page執行順序:OnPreInit()、OnInit()……C#
- js函式整合佇列順序執行外掛JS函式佇列
- C++11 中的執行緒、鎖和條件變數C++執行緒變數
- Jmeter之八大可執行元件及執行順序JMeter元件
- 微軟官方:SELECT語句邏輯處理順序微軟
- SQL邏輯查詢處理順序特別提醒SQL
- 10個隊中非空佇列按佇列號從小到大的順序串接成一條鏈佇列
- MySQL 並列排名和順序排名查詢MySql
- mysql 中sql語句關鍵字的書寫順序與執行順序MySql