原文: Code Health: Reduce Nesting, Reduce Complexity
多層嵌套的代碼不僅影響可讀性瞄沙,同時很容易導(dǎo)致錯誤忘嫉。試著在下面同一份代碼的兩個版本中找出 bug:
答案: "wrong encoding" 和 "unauthorized" 錯誤被交換了. 在重構(gòu)后的版本中显蝌,很容易發(fā)現(xiàn)這個錯誤, 因?yàn)樵谥貥?gòu)版本的檢查中挂洛,被認(rèn)為是錯誤的情況都被處理了佩谣。
上面所展示出的重構(gòu)技術(shù)被稱為保護(hù)條款 (guard clauses). 一個保護(hù)條款會檢查一個判斷標(biāo)準(zhǔn), 如果標(biāo)準(zhǔn)未被滿足凡怎, 那么它將會很快失敗悉稠。它分離了計(jì)算邏輯 (computational logic) 與錯誤邏輯 (error logic). 通過消除在錯誤檢查與捕獲之間的認(rèn)知鴻溝, 它釋放了心理上的處理能力. 因此, 重構(gòu)后的版本更具有可讀性與維護(hù)性宫蛆。
下面是一些在代碼中減少嵌套的經(jīng)驗(yàn):
條件判斷的代碼塊不要跨度太大,相隔太遠(yuǎn). 通過就近處理各種情況來增加可讀性.(It increases readability by keeping things local.)
當(dāng)你的循環(huán)和分支超過 2 層時考慮重構(gòu).
考慮將嵌套的邏輯分為獨(dú)立的函數(shù)的猛。比如, 如果你在一個循環(huán)中對一些對象進(jìn)行處理, 這其中的每個對象都包含一個列表 (比如一個有著重復(fù)字段的協(xié)議緩沖區(qū)), 那么你可以定義一個函數(shù)來處理這里面的每個對象洒扎,而不是使用一個兩層的嵌套循環(huán).
減少嵌套會帶來更加可讀的代碼,讓我們更加容易發(fā)現(xiàn) bug, 加速開發(fā)迭代和增強(qiáng)穩(wěn)定性衰絮。盡你所能去簡化代碼袍冷!