1. 程式人生 > >C++程式設計規範之20:避免函式過長,避免巢狀過深

C++程式設計規範之20:避免函式過長,避免巢狀過深

摘要:

    短勝於長,平勝於優,過長的函式和巢狀過深的程式碼塊的出現,經常是因為沒能賦予一個函式以一個緊湊的職責所致,這兩種情況通常都能夠通過更好的重構予以解決。

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

    過長的函式和巢狀過深的程式碼塊都是使函式更難於理解和維護的密不可分的兩大元凶。

我們在編寫程式碼的時候要注意限制函式的長度和巢狀深度,合理的建議如下:

1.      儘量緊湊。一個函式只賦予一個職責。

2.      不要自我重複。優先使用命名函式,而不要讓相似的程式碼片段重複出現。

3.      優先使用&&。在可以使用&&條件判斷的地方要避免使用連續巢狀的if。

4.      不要過分使用try。優先使用解構函式進行自動清除而避免使用try程式碼塊。

5.      優先使用標準演算法。演算法比迴圈巢狀要少,通常也更好。

6.      不要根據型別標籤進行分支。也就是儘量不要使用switch…..case語句,而要優先使用多型函式。

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

相關推薦

C++程式設計規範20避免函式避免

摘要:     短勝於長,平勝於優,過長的函式和巢狀過深的程式碼塊的出現,經常是因為沒能賦予一個函式以一個緊湊的職責所致,這兩種情況通常都能夠通過更好的重構予以解決。     每個函式都應該顧其名而能知其義,易於理解的工作單元。如果於此相反,函式試圖將多個這樣的小概念合併到

C語言/C++程式設計 時鐘(分針追趕時針分針與時針相遇次數問題)

題目描述 有一個標準的12小時時鐘,它有一個時針,一個分針。現問你,在給定的兩個時刻之間分針與時針相遇幾次? 輸入 輸入包含多組測試資料。每組輸入包含4個整數,前兩個數字分別表示起始時刻的小時和分,後兩個數字分別表示結束時刻的小時和分。 小時數在[1,12]

C++程式設計基礎函式

函式是程式程式碼的一個自包含單元,用於完成某一特定的任務。 定義函式的目的: 避免重複的程式設計, 使程式更加模組化,便於閱讀和修改。 一個程式必須有且只有一個main()函式,C++從main()函式開始執行。 C++語言中,所有函式都是平行獨立的,無主次或相互包含之分。函式可以巢狀呼叫,

Spark程式設計指南向Spark運算元傳遞函式

文章目錄 向Spark運算元傳遞函式 Java的兩種方法 匿名內部類 建立類實現Function介面 Scala的兩種方法 傳遞匿名函式 定義全域性單例物件中的靜態方法

google C++ 程式設計規範中的禁用複製建構函式和賦值運算子

在google C++程式設計規範中有下面一段描述: 僅在程式碼中需要拷貝一個類物件的時候使用拷貝建構函式;不需要拷貝時應使用 DISALLOW_COPY_AND_ASSIGN。 定義:通過拷貝新建物件時可使用拷貝建構函式(特別是物件的傳值時)。 優點:拷貝建

C/C++程式設計學習筆記二C語言的函式如何使用指標交換兩個數的值深入理解指標

 使用外部函式交換兩個變數的值,一個再簡單不過的事情,但是在C/C++中,正確實現該功能反應了你對指標和引用等重要知識的掌握程度。本文列舉了幾種常見的寫法,其中前三種是錯誤的,後兩種是正確的。第四種使

黑馬程式設計師C#程式設計基礎學習筆記不斷要求使用者輸入一個數字然後列印這個數字的二倍當用戶輸入q的時候程式退出。

--------------------------------------------------- 2345王牌技術員聯盟、2345王牌技術員聯盟、期待與您交流!-----------------------------------------------------

C++虛擬函式虛擬函式表與虛擬函式呼叫

繼續前一篇《C++ 虛擬函式之一:物件記憶體佈局》,這次來分析一下虛擬函式表的結構和虛擬函式的呼叫過程。 虛擬函式表結構 如何檢視虛擬函式表的結構?使用gdb直接檢視記憶體固然可以,但是不夠直觀,那麼有沒有更好的方法呢?使用gcc的-fdump-clas

Linux C程式設計學習筆記(2)open、creat、close函式及檔案的建立、開啟與關閉

my_create.c #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include

嵌入式Linux C程式設計學習路(七)—— Open/Close函式

1. input & output:站在應用層考慮 Input:核心-->使用者,從核心讀取資料或從檔案讀取資料 ————read函式 Output:使用者-->核心,寫資料到核心或寫資料到檔案中 ————write函式 2. 核心中檔案太多了,寫到

C/C++ socket程式設計教程Windows下的socket程式

本節講解 Windows 下 Socket ,學習 Linux Socket 的讀者可以跳過。 伺服器端程式碼 server.cpp: #include <stdio.h> #include <winsock2.h> #pragma c

C#設計模式9模板方法

like not 存在 als col wan 結構 允許 封裝 模板方法 模板方法是一個方法,定義了算法的步驟,並允許子類為一個或多個步驟提供實現。 本例中用沖泡咖啡和茶的例子來說明: 上圖說明了沖泡咖啡和茶的步驟,可以看出沖泡咖啡和茶的步驟差不多,很相似,先來看看沒有

2.我使用的C/C++編寫規範命名約定

test imu dir use 規範 意義 BE 常見 單詞 自用的規範,參考自Google、華為與微軟。? 最重要的一致性規則是命名管理,命名風格直接可以直接確定命名實體是:類型、變量、函數、常量、宏等等,無需查找實體聲明,我們大腦中的模式匹配引擎依賴於這些命名規則。

3. 我使用的C/C++編寫規範格式

lse word ble 簡單 編輯器 func 水平 cin 操作符 閑來無事,把自用的C/C++編程規範整理一下。內容主要來自Google與華為,並參考了一點微軟。   整個項目服從統一的編程風格是很重要的,這樣才能讓所有人在閱讀和理解代碼時更加容易。 1.行長度  

(轉)11條最全面的C/C++程式設計規範總結

一、檔案排版方面 1. 包含標頭檔案  • 先系統標頭檔案,後用戶標頭檔案。  • 系統標頭檔案,穩定的目錄結構,應採用包含子路徑方式。  • 自定義標頭檔案,不穩定目錄結構,應在dsp中指定包含路徑。  • 系統標頭檔案應用:#include <xxx.h>  • 自定義同

MISRA C - 嵌入式系統 C 程式設計規範

MISRA C - 嵌入式系統 C 程式設計規範 MISRA C is a set of software development guidelines for the C programming language developed by MISRA (Motor Industry S

C++ Coding Standard - C++ 程式設計規範

C++ Coding Standard - C++ 程式設計規範 https://users.ece.cmu.edu/~eno/coding/CppCodingStandard.html Adapted from http://www.possibility.com/Cpp/CppCod

一張圖總結Google C++程式設計規範(Google C++ Style Guide)【轉】

(轉自:https://blog.csdn.net/voidccc/article/details/37599203?utm_source=blogxgwz0) Google C++ Style Guide是一份不錯的C++編碼指南,我製作了一張比較全面的說明圖,可以在短時間內快速掌握規範的重點

Python函數語言程式設計(一)高階函式

首先有一個高階函式的知識。 一個函式可以接收另一個函式作為引數,這種函式就稱之為高階函式。 def add(x, y, f): return f(x) + f(y) 當我們呼叫add(-5, 6, abs)時,引數x,y和f分別接收-5,6和abs,根據函式定義,我們可以推導計算過程為:

C#程式設計基礎-專案1景點門票收銀系統-練習switch語句、狀語句、多重if-else語句的使用

知識點:switch語句、巢狀語句、多重if-else語句。 需求說明:景點門票實行淡旺季票價,淡季從1月到6月,普通票價40元,學生票價20元。旺季從7月到12月,普通票價60元,學生票價20元。另外針對不同型別的參觀者,也享受不同的優惠政策。1.2米以下兒童免票,老年人享受5折票價,離休