鮑勃大爺:將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提供的一維結構,就像按順序逐步處理每種情況一樣簡單。
相關文章
- 鮑勃大爺:為何選擇Clojure?
- 鮑勃大爺:SOLID概念解釋Solid
- 如何使用ReentrantLock的條件變數,讓多個執行緒順序執行?ReentrantLock變數執行緒
- 鮑勃大爺:單元測試中單元是多小?
- 鮑勃大爺:物件是更關注行為,資料庫表則是簡單的資料結構,if/else/switch有使用依據物件資料庫資料結構
- Pytest 順序執行,依賴執行,引數化執行
- 鮑勃大叔為敏捷正名敏捷
- 你還在用if-else嗎?鮑勃大叔提出改進意見!
- 如何在Kafka中將嚴格順序與大規模並行性結合? - EmilKafka並行
- MySQL筆記 10 條件邏輯MySql筆記
- Sql執行順序SQL
- Java中如何保證執行緒順序執行Java執行緒
- 多執行緒06:條件變數執行緒變數
- 你瞭解一條sql的執行順序嗎SQL
- 鮑勃大叔:程式設計正規化並不排斥!程式設計
- 多執行緒(2)-執行緒同步條件變數執行緒變數
- JavaScript執行順序分析JavaScript
- pipeline的執行順序
- mySQL 執行語句執行順序MySql
- Python執行緒條件變數Condition解析Python執行緒變數
- [20201224]order by欄位順序與查詢條件為NULL.txtNull
- C#中Page執行順序:OnPreInit()、OnInit()……C#
- JDBC中PreparedStatement介面的執行邏輯JDBC
- Python if else條件語句Python
- Python3 執行緒優先順序佇列( Queue)Python執行緒佇列
- MySQL 並列排名和順序排名查詢MySql
- 鮑勃大爺:敏捷是讓經理面對慘淡的現實!是不是這種試錯成本太高?敏捷
- Python執行緒專題7:條件變數Python執行緒變數
- SQL語句執行順序SQL
- Select語句執行順序
- js執行順序Event LoopJSOOP
- Spring Aop的執行順序Spring
- sql mysql 執行順序 (4)MySql
- js函式和變數的執行順序【易錯】JS函式變數
- 每個鎖建立多個條件佇列以避免虛假喚醒佇列
- mysql 中sql語句關鍵字的書寫順序與執行順序MySql
- Js中async/await的執行順序詳解JSAI
- Java for迴圈中語句執行的順序Java