天天看點

《編寫高品質代碼:改善c程式代碼的125個建議》——建議20-4:盡量使邏輯判斷語句置于循環語句外層

本節書摘來自華章計算機《編寫高品質代碼:改善c程式代碼的125個建議》一書中的第3章,建議20-4,作者:馬 偉 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

一般情況下,我們應該盡量避免在程式的循環體内包含邏輯判斷語句。當循環體内不得已而存在邏輯判斷語句,并且循環次數很大時,我們應該盡量想辦法将邏輯判斷語句移到循環語句的外層,進而使程式減少執行邏輯判斷語句的次數,提高程式的執行效率。如下面的示例代碼所示:

在上面的代碼中,每執行一次for循環,都要執行一次if語句判斷。當for循環的次數很大時,執行多餘的判斷不僅會消耗系統的資源,而且會打斷循環“流水線”作業,使得編譯器不能對循環進行優化處理,降低程式的執行效率。是以,我們可以通過将邏輯判斷語句移到循環語句的外層的方法來減少判斷的次數,如下面的代碼所示:

雖然上面的代碼沒有前面的看起來簡潔,但卻使程式執行邏輯判斷語句減少n-1次,在for循環次數很大時,這種優化顯然是值得的。

最後還需要注意的是,循環體中的判斷語句是否可以移到循環體外,要視程式的具體情況而定。一般情況下,與循環變量無關的判斷語句可以移到循環體外,而有關的則不可以。

繼續閱讀