C语言代码风格
C語言代碼風格總結
此文將用到的一些代碼風格規范總結起來,作為自己以后寫代碼時的參考。
大體上和Google全球開源項目C++風格一樣,Google風格指南鏈接如下:
Google 開源項目C++ 風格指南 - 內容目錄
(一)命名風格
業界流行的3種命名風格分別是大小駝峰式、下劃線式、匈牙利式,首先排除匈牙利式風格,個人比較猶豫的是小駝峰和下劃線式命名,個人比較喜歡下劃線式命名,一眼就能看出哪些單詞,令人很舒服,像linux這種C語言的終極大項目大部分都是下劃線式命名可見一斑。
而大小駝峰看起來很簡略,可是實際寫代碼的時候大部分都是比較長的幾個單詞組合,導致代碼大部分都是一連串的英文字母,可讀性比較差。有些人可能覺得可以用單詞縮寫或者縮減單詞這種手段來減少長度,但是《代碼整潔之道》說的很清楚,這種人寫的代碼只能給自己看,而且時間成了自己都要想半天縮寫是什么意思!
所以當長度上來以后我每次看的時候都要貼到屏幕上去分解單詞,眼睛太累了。然而對于單片機來說,實測發現用下劃線比大小駝峰多出很多內存消耗!
目前為了代碼可讀性暫時選用了下劃線式的,畢竟《重構》有句話說的好,代碼是寫給人的,不是寫給機器的!內存不足的時候再說吧!
1 變量命名:
全局變量、普通變量、結構體變量、臨時變量統一采用小寫單詞加下劃線式的命名格式,如this_is_name
補充規則:
ps:全局變量以后的項目可以參考《華為C語言規范》在前面加前綴
g_xxxx (global)
2 函數命名
函數命名的時候,首先加模塊名,然后動詞在前面,名詞在后面,統一小寫單詞加下劃線。另外根據《代碼整潔之道》函數粒度要足夠細,一個函數只允許做一件事,參數要足夠少,命名要意思表達準確,比如函數從外部拿數據的時候buf地址形參命名為source,函數將數據傳遞到外面的時候buf地址形參命名為destin。
另:
如果只是返回BOOL型的函數在函數名最前面加前綴is_xxxx,代表只返回TRUE or FALSE。
3 類型命名
結構體、聯合體、枚舉等命名的時候為了和變量區分開來,統一采用大駝峰式命名法則,結構體變量依舊是下劃線式。而枚舉內的變量統一全部大寫。
4 宏定義命名
數字型的宏定義統一大寫,函數型的宏定義和普通函數一樣的命名法則。
(二)程序風格
1 內聯函數
當函數只有 10 行甚至更少時將其定義為內聯函數.
內聯函數可以令目標代碼更加高效. 對于存取函數以及其它函數體比較短, 性能關鍵的函數, 鼓勵使用內聯.
但濫用內聯將導致程序變得更慢. 內聯可能使目標代碼量或增或減, 這取決于內聯函數的大小. 內聯非常短小的存取函數通常會減少代碼大小, 但內聯一個相當大的函數將戲劇性的增加代碼大小. 現代處理器由于更好的利用了指令緩存, 小巧的代碼往往執行更快。
所以,一個較為合理的經驗準則是, 不要內聯超過 10 行的函數.。
另一個實用的經驗準則: 內聯那些包含循環或 switch 語句的函數常常是得不償失 (除非在大多數情況下, 這些循環或 switch 語句從不被執行)。
2 #include 的路徑及順序
使用標準的頭文件包含順序可增強可讀性, 避免隱藏依賴。
順序:所依賴的頭文件,C 庫,其他庫的 .h,本項目內的 .h。
…待補充…
總結
- 上一篇: ARM芯片选型的一些建议
- 下一篇: JPA二:FindBy和JPQL