C編碼規范
時間:2016-12-14作者:華清遠見
為什么需要編碼規范? 見過 很多C語言的初學者寫的代碼,他們并不懂什么是好的編碼 風格,寫出來的代碼風格各異。有的風格極易導致錯誤,有的風格讓人難以理解,有的風格讓人眼花繚亂,有的風格甚至連作者自己都不知道寫代碼那會自己到底在想什么。 良好的編碼風格,并不是官僚制度下產生的浪費大家時間的制度。統一的編碼風格,可以讓別人很容易理解代碼意圖,進而快速使用和二次開發,大大節約開發時間。并且極大的簡化了代碼維護,減少了維護成本。 良好的編碼風格,可以讓程序員避免一些細節上的缺失。雖然這些東西可能很細微,但若你不注意這些細節,那可能會給整個軟件的質量帶來極大的影響,所謂“千里之堤毀于蟻穴”。 很多大公司,例如google,華為,騰訊等,都會在新員工入職培訓的階段培訓編程標準。每個員工都必須遵循公司內部制定的編程標準。程序就像一個作品,有素質有修養的程序員的作品必然是一圖精美的圖畫,一首美妙的歌曲,一本賞心悅目的小說。 如何編寫代碼 注釋 注釋是源碼中非常重要的部分,通常源程序中的注釋量必須在15%~20%以上。注釋的原則是有助于程序的閱讀和理解。所以注釋語言必須準確,易懂,簡潔。注釋不宜過多,也不宜太少。 文件或者模塊的注釋 對于一個文件或模塊注釋,應該有文件名稱,生成日期,作者名字,模塊描述,版本編號,修改記錄等。例如: /**************************************** 2.函數的注釋 對于函數,我們需要標注的內容主要是:函數名稱,參數說明,功能描述,返回值說明等。例如: /*************************************************** 3.其他的注釋 i. 邊寫代碼邊注釋,對于具有一定含義的變量、常量、數據結構以及相關算法,若其名稱不能充分說明其用途或需要添加額外的說明,都必須進行注釋。 ii. 注釋一般位于需要注釋的語句相鄰的上方或者右方。禁止在代碼的下方寫注釋。 iii. 將注釋與其上面的代碼用空行間隔。 iv. 注釋的格式盡量一致,建議使用/*..........*/ 二、代碼的排版 良好的排版是優秀代碼風格的關鍵。以下是代碼排版需要主動的事項。 1.程序塊要采用縮進風格編寫,縮進的空格數是4個 2.相對獨立的代碼塊之間,變量的說明之后,必須加入空行。 例如: if ( ! is_empty(list))) 3.較長的語句要分成多行書寫。循環、判斷等語句中若有較長的表達式或語句,要進行適當的劃分。 4.不允許把多個短語句寫在一行中,一行只寫一條語句。 例如: rect.length = 0; rect.width = 0; 5.if,for,do,while,case,switch,default等獨占一行,且其中語句部分無論幾行都需要加{}。 6.注意運算符的優先級,并用括號明確表達式的操作順序,避免使用默認優先級。 三、標識符命名 標識符的命名要清晰,有明確含義。使用完整的單詞或大家基本可以理解的縮寫,避免使人產生誤解。 1.常量命名使用大寫 例如 :MAX_VALUE 2.變量命名禁止取單個字符,建議除了要有具體含義外,還能表明存儲類型、數據類型等,但是i,j,k作為局部不循環變量是可以的。 變量命名可以采用匈牙利命名法 ,變量的第一個字母小寫, 表示其數據類型,如 int iIndex; char cIndex; 也可以采用linux通用的命名規范,采用‘_’分割短語命名一個變量,例如一個變量保存圖書數目,可以命名為 int number_book; 下列所示的局部變量方法可以借鑒: int liv_width; 其解釋如下: l 局部變量(local) 3.標示符的風格要自始至終保持一致,不可來回變換。 4.避免不易理解的數字,要用有意義的宏來代替。例如: #define MAX 128 四、宏 1.用宏定義表達式的時候,要使用完備的括號。例如: #define MAX(a,b) a > b ? a : b 2.使用宏的時候,不允許參數發生變化。例如: 如下用法會產生錯誤: #define SQUARE(a) ((a) * (a)) 3.將常量聲明為宏,防止代碼中的硬編碼。 比如:int user[100]; 誰也不知道100到底表示什么含義,你可以定義一個宏來表示其含義,比如大用戶數量MAX_USER。若程序中突然出現for(i = 0;i < 100;i++)這樣的代碼,你或許根本不知道100表示什么含義。再或者你要改變這個值,100出現幾次就需要修改幾個位置 ,這就是硬編碼帶來的后果。 4.頭文件中的預編譯 當多個文件同時包含一個頭文件的時候,#ifndef是個很關 鍵的東西。它能避免重復包含頭文件所帶來的命名沖突。 一般的格式如下: 在/fad/cde.h文件中 #ifndef FAD_CDE_H 五、函數 1.對于所調用的函數的錯誤返回碼,要進行仔細,全面的處理。 2.函數的規模盡量限制在200行以內。 3.一個函數僅完成一件事情,多功能的函數,可能會使函數的理解、測試、維護變得困難。 4.檢查所有參數輸入的有效性,可以使用斷言。 六、頭文件和源文件 一般來說,頭文件中是聲明,源文件中是定義。源文件要編譯成庫文件,若別人要使用你的函數,就要引用你的頭文件,所以頭文件一般是變量、宏定義、枚舉、結構和函數接口的聲明,源文件則是實現的細節。 頭文件和源文件大的用處就是聲明和實現分開。直接把函數實現寫到頭文件中是很不好的習慣。
發表評論
|