C++程式設計規範之20:避免函式過長,避免巢狀過深
摘要:
短勝於長,平勝於優,過長的函式和巢狀過深的程式碼塊的出現,經常是因為沒能賦予一個函式以一個緊湊的職責所致,這兩種情況通常都能夠通過更好的重構予以解決。
每個函式都應該顧其名而能知其義,易於理解的工作單元。如果於此相反,函式試圖將多個這樣的小概念合併到一個長的函式體中,那麼它最終將不堪重負。
過長的函式和巢狀過深的程式碼塊都是使函式更難於理解和維護的密不可分的兩大元凶。
我們在編寫程式碼的時候要注意限制函式的長度和巢狀深度,合理的建議如下:
1. 儘量緊湊。一個函式只賦予一個職責。
2. 不要自我重複。優先使用命名函式,而不要讓相似的程式碼片段重複出現。
3. 優先使用&&。在可以使用&&條件判斷的地方要避免使用連續巢狀的if。
4. 不要過分使用try。優先使用解構函式進行自動清除而避免使用try程式碼塊。
5. 優先使用標準演算法。演算法比迴圈巢狀要少,通常也更好。
6. 不要根據型別標籤進行分支。也就是儘量不要使用switch…..case語句,而要優先使用多型函式。
當然,如果一個函式的功能無法合理地重構為多個獨立的子任務,那麼它的較長和巢狀較多就是合理的。但是如果有幾個這樣的函式都具有相似的引數,那麼它們就有可能成為一個新類的成員。