色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置: > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > C編碼規范
C編碼規范
時間:2016-12-14作者:華清遠見

為什么需要編碼規范?

見過 很多C語言的初學者寫的代碼,他們并不懂什么是好的編碼 風格,寫出來的代碼風格各異。有的風格極易導致錯誤,有的風格讓人難以理解,有的風格讓人眼花繚亂,有的風格甚至連作者自己都不知道寫代碼那會自己到底在想什么。

良好的編碼風格,并不是官僚制度下產生的浪費大家時間的制度。統一的編碼風格,可以讓別人很容易理解代碼意圖,進而快速使用和二次開發,大大節約開發時間。并且極大的簡化了代碼維護,減少了維護成本。

良好的編碼風格,可以讓程序員避免一些細節上的缺失。雖然這些東西可能很細微,但若你不注意這些細節,那可能會給整個軟件的質量帶來極大的影響,所謂“千里之堤毀于蟻穴”。

很多大公司,例如google,華為,騰訊等,都會在新員工入職培訓的階段培訓編程標準。每個員工都必須遵循公司內部制定的編程標準。程序就像一個作品,有素質有修養的程序員的作品必然是一圖精美的圖畫,一首美妙的歌曲,一本賞心悅目的小說。

如何編寫代碼

注釋

注釋是源碼中非常重要的部分,通常源程序中的注釋量必須在15%~20%以上。注釋的原則是有助于程序的閱讀和理解。所以注釋語言必須準確,易懂,簡潔。注釋不宜過多,也不宜太少。

文件或者模塊的注釋

對于一個文件或模塊注釋,應該有文件名稱,生成日期,作者名字,模塊描述,版本編號,修改記錄等。例如:

/****************************************
        * name: //文件名稱
        * Date: //創建日趨
        * Description: //詳細描述此程序文件 * 主要功能,以及與其他文 * 件的關系
        * Author: //文件作者
        * Version: //文件版本號。
        * Modification: // 描述該文件修改日志
        *****************************************/

2.函數的注釋

對于函數,我們需要標注的內容主要是:函數名稱,參數說明,功能描述,返回值說明等。例如:

/***************************************************
        *Function name: //函數名稱
        * Description: //函數功能描述
        *Inputs: //函數參數描述
        * Outputs: //函數返回值描述
        *Author: //函數作者
        *Other: //函數其他說明
        ***************************************************/

3.其他的注釋

i. 邊寫代碼邊注釋,對于具有一定含義的變量、常量、數據結構以及相關算法,若其名稱不能充分說明其用途或需要添加額外的說明,都必須進行注釋。

ii. 注釋一般位于需要注釋的語句相鄰的上方或者右方。禁止在代碼的下方寫注釋。

iii. 將注釋與其上面的代碼用空行間隔。

iv. 注釋的格式盡量一致,建議使用/*..........*/

二、代碼的排版

良好的排版是優秀代碼風格的關鍵。以下是代碼排版需要主動的事項。

1.程序塊要采用縮進風格編寫,縮進的空格數是4個

2.相對獨立的代碼塊之間,變量的說明之后,必須加入空行。

例如:

if ( ! is_empty(list)))
        {
                .................// code
        }

        Pop_list(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)
        i        數據類型(Integer)
        v        變量(Variable)
        width        變量含義

3.標示符的風格要自始至終保持一致,不可來回變換。

4.避免不易理解的數字,要用有意義的宏來代替。例如:

#define MAX 128

四、宏

1.用宏定義表達式的時候,要使用完備的括號。例如:

#define MAX(a,b) a > b ? a : b
        應該定義為:#define MAX(a,b) (a) > (b) ? (a) : (b)
        #define RECTANGLE_AREA( a,b) ( a * b )
        應該定義為:#define RECTANGLE_AREA(a,b) ((a) * (b))

2.使用宏的時候,不允許參數發生變化。例如:

如下用法會產生錯誤:

#define SQUARE(a) ((a) * (a))
        Int a = 5;
        Int b = SQUARE(a++)
        宏擴展之后,或許會讓你意想不到結果是30。
        擴展后的表達式是:((a++) * (a++))
        正確的寫法應該是:
        b = 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
        #define FAD_CDE_H
        .....
        #endif

五、函數

1.對于所調用的函數的錯誤返回碼,要進行仔細,全面的處理。

2.函數的規模盡量限制在200行以內。

3.一個函數僅完成一件事情,多功能的函數,可能會使函數的理解、測試、維護變得困難。

4.檢查所有參數輸入的有效性,可以使用斷言。

六、頭文件和源文件

一般來說,頭文件中是聲明,源文件中是定義。源文件要編譯成庫文件,若別人要使用你的函數,就要引用你的頭文件,所以頭文件一般是變量、宏定義、枚舉、結構和函數接口的聲明,源文件則是實現的細節。

頭文件和源文件大的用處就是聲明和實現分開。直接把函數實現寫到頭文件中是很不好的習慣。

發表評論
評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
主站蜘蛛池模板: 无码内射中文字幕岛国片 | 免费无码又爽又刺激动态图 | 粉嫩大学生无套内射无码卡视频 | 国产一品道av在线一二三区 | 真人无码国产作爱免费视频 | 爽爽影院线观看免费 | 最新精品国偷自产在线老年人 | 四虎影院在线免费播放 | 伊人狠狠色j香婷婷综合 | 80s国产成年女人毛片 | 免费无码aⅴ免费中文字幕 久草久热 | 精品无码一区二区三区av | 无码少妇一区二区三区免费看 | 小荡货好紧好爽A片视频 | 国产一区二区三区小说 | 男女性杂交内射女BBWXZ | 在线综合亚洲欧洲综合网站 | 国产精品女人呻吟在线观看 | 日本黄色三极片 | 成全在线观看高清资源 | 99久久国产综合精品女乱人伦 | 一二三四日本中文在线 | 三年片大全在线观看免费观看第二集 | 亚洲日韩中文字幕日本 | 免费女人18毛片a毛片视频 | 美女视频无遮挡永久网站 | 放荡少妇张开双腿任人玩 | 国产精品国产三级国AV | 18勿入网站免费永久 | 久久精品aⅴ无码中文字字幕不卡 | 人妻少妇精品久久 | 免费特级黄毛片在线成人观看 | 男人的天堂AV网址 | 久久精品国产色蜜蜜麻豆 | 茄子在线看片免费人成视频 | 女社长的秘密奴调教 | 中国浓毛少妇毛茸茸 | 日韩欧美亚洲国产精品字幕欠久久 | 国产AV麻豆MAG剧集 | 日本道二区视频 | 欧美影音 |