天天看點

C++程式設計規範之20:避免函數過長,避免嵌套過深

摘要:

    短勝于長,平勝于優,過長的函數和嵌套過深的代碼塊的出現,經常是因為沒能賦予一個函數以一個緊湊的職責所緻,這兩種情況通常都能夠通過更好的重構予以解決。

    每個函數都應該顧其名而能知其義,易于了解的工作單元。如果于此相反,函數試圖将多個這樣的小概念合并到一個長的函數體中,那麼它最終将不堪重負。

    過長的函數和嵌套過深的代碼塊都是使函數更難于了解和維護的密不可分的兩大元兇。

我們在編寫代碼的時候要注意限制函數的長度和嵌套深度,合理的建議如下:

1.      盡量緊湊。一個函數隻賦予一個職責。 2.      不要自我重複。優先使用命名函數,而不要讓相似的代碼片段重複出現。 3.      優先使用&&。在可以使用&&條件判斷的地方要避免使用連續嵌套的if。 4.      不要過分使用try。優先使用析構函數進行自動清除而避免使用try代碼塊。 5.      優先使用标準算法。算法比循環嵌套要少,通常也更好。 6.      不要根據類型标簽進行分支。也就是盡量不要使用switch…..case語句,而要優先使用多态函數。

    當然,如果一個函數的功能無法合理地重構為多個獨立的子任務,那麼它的較長和嵌套較多就是合理的。但是如果有幾個這樣的函數都具有相似的參數,那麼它們就有可能成為一個新類的成員。

繼續閱讀