嵌入式C語言編程規範--函數(個人規約)

函數設計的精髓:整潔,同時把代碼有效組織起來。
整潔要求:代碼簡單直接、不隱藏設計者的意圖、用乾淨利落的抽象和直截了當的控制語句將功能實現。

代碼的有效組織包括:邏輯層組織和物理層組織兩個方面。邏輯層,主要是把不同功能的函數通過某種聯繫組織起來,主要關注模塊間的接口,也就是模塊的架構。物理層,無論使用什麼樣的目錄或者名字空間等,需要把函數用一種標準的方法組織起來。設計良好的目錄結構、函數名字、文件組織等,這樣可以方便查找。

1、一個函數僅完成一項功能;

說明:如果功能完成過多,會讓使用者難以理解,使用起來不方便。

2、 重複代碼應該儘可能提煉成函數;

說明:重複代碼提煉成函數可以帶來維護成本的降低。

3、 避免函數過長,新增函數不超過50行

說明:本規則僅對新增函數做要求,對已有函數修改時,建議不增加代碼行。過長的函數往往意味着函數功能不單一,過於複雜;業界普遍認爲一個函數的代碼行不要超過一個屏幕,避免來回翻頁影響閱讀;一般的代碼度量工具建議都對此進行檢查。

4、 避免函數的代碼塊嵌套過深,新增函數的代碼塊嵌套不超過4層;
說明:本規則僅對新增函數做要求,對已有的代碼建議不增加嵌套層次。

函數的代碼塊嵌套深度指的是函數中的代碼控制塊(例如:if、for、while、switch等)之間互相包含的深度。每級嵌套都會增加閱讀代碼時的腦力消耗,因爲需要在腦子裏維護一個“棧”(比如,進入條件語句、進入循環„„)。應該做進一步的功能分解,從而避免使代碼的閱讀者一次記住太多的上下文。

5、廢棄代碼(沒有被調用的函數和變量)要及時清除;

說明:程序中的廢棄代碼不僅佔用額外的空間,而且還常常影響程序的功能與性能,很可能給程序的測試、維護等造成不必要的麻煩。

6、函數不變參數使用const;

說明:不變的值更易於理解/跟蹤和分析,把const作爲默認選項,在編譯時會對其進行檢查,使代碼更牢固/更安全。

7、函數的參數個數不超過5個;

說明:函數的參數過多,會使得該函數易於受外部(其他部分的代碼)變化的影響,從而影響維護工作。函數的參數過多同時也會增大測試的工作量。函數的參數個數不要超過5個,如果超過了建議拆分爲不同函數。

8、在源文件範圍內聲明和定義的所有函數,除非外部可見,否則應該增加static關鍵字;

說明:如果一個函數只是在同一文件中的其他地方調用,那麼就用static聲明。使用static確保只是在聲明它的文件中是可見的,並且避免了和其他文件或庫中的相同標識符發生混淆的可能性。

9、不要省略返回值的類型,如果函數沒有返回值,那麼應聲明爲void類型;

說明:C語言中,凡不加類型說明的函數,一律自動按整型處理。如果不註明類型,容易被誤解爲void類型,產生不必要的麻煩

10、對於有返回值的函數,每一個分支都必須有返回值

說明:爲了保證對被調用函數返回值的判斷,有返回值的函數中的每一個退出點都需要有返回值

11、如果返回值表示函數運行是否正常,規定0爲正常退出,不同非0值標識不同異常退出。避免使用TRUE或FALSE作爲返回值

12、必須對所調用函數的錯誤返回值進行處理

說明:函數返回錯誤,往往是因爲輸入的參數不合法,或者此時系統已經出現了異常。如果不對錯誤返回值進行必要的處理,會導致錯誤的擴大,甚至導致系統的崩潰

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章