gogo专业大尺度亚洲高清人体,美女张开双腿让男生桶,亚洲av无码一区二区三区鸳鸯影院,久久久久国产精品人妻

當(dāng)前位置: > 華清遠(yuǎn)見教育科技集團 > 嵌入式學(xué)習(xí) > 講師博文 > C編碼規(guī)范
C編碼規(guī)范
時間:2016-12-14作者:華清遠(yuǎn)見

為什么需要編碼規(guī)范?

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

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

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

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

如何編寫代碼

注釋

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

文件或者模塊的注釋

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

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

2.函數(shù)的注釋

對于函數(shù),我們需要標(biāo)注的內(nèi)容主要是:函數(shù)名稱,參數(shù)說明,功能描述,返回值說明等。例如:

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

3.其他的注釋

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

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

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

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

二、代碼的排版

良好的排版是優(yōu)秀代碼風(fēng)格的關(guān)鍵。以下是代碼排版需要主動的事項。

1.程序塊要采用縮進(jìn)風(fēng)格編寫,縮進(jìn)的空格數(shù)是4個

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

例如:

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

        Pop_list(list);

3.較長的語句要分成多行書寫。循環(huán)、判斷等語句中若有較長的表達(dá)式或語句,要進(jìn)行適當(dāng)?shù)膭澐帧?/p>

4.不允許把多個短語句寫在一行中,一行只寫一條語句。

例如:

rect.length = 0;

rect.width = 0;

5.if,for,do,while,case,switch,default等獨占一行,且其中語句部分無論幾行都需要加{}。

6.注意運算符的優(yōu)先級,并用括號明確表達(dá)式的操作順序,避免使用默認(rèn)優(yōu)先級。

三、標(biāo)識符命名

標(biāo)識符的命名要清晰,有明確含義。使用完整的單詞或大家基本可以理解的縮寫,避免使人產(chǎn)生誤解。

1.常量命名使用大寫 例如 :MAX_VALUE

2.變量命名禁止取單個字符,建議除了要有具體含義外,還能表明存儲類型、數(shù)據(jù)類型等,但是i,j,k作為局部不循環(huán)變量是可以的。

變量命名可以采用匈牙利命名法 ,變量的第一個字母小寫,

表示其數(shù)據(jù)類型,如 int iIndex; char cIndex;

也可以采用linux通用的命名規(guī)范,采用‘_’分割短語命名一個變量,例如一個變量保存圖書數(shù)目,可以命名為

int number_book;

下列所示的局部變量方法可以借鑒:

int liv_width;

其解釋如下:

l        局部變量(local)
        i        數(shù)據(jù)類型(Integer)
        v        變量(Variable)
        width        變量含義

3.標(biāo)示符的風(fēng)格要自始至終保持一致,不可來回變換。

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

#define MAX 128

四、宏

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

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

2.使用宏的時候,不允許參數(shù)發(fā)生變化。例如:

如下用法會產(chǎn)生錯誤:

#define SQUARE(a) ((a) * (a))
        Int a = 5;
        Int b = SQUARE(a++)
        宏擴展之后,或許會讓你意想不到結(jié)果是30。
        擴展后的表達(dá)式是:((a++) * (a++))
        正確的寫法應(yīng)該是:
        b = SQUARE(a);
        a++; // a++ 只執(zhí)行了一次

3.將常量聲明為宏,防止代碼中的硬編碼。

比如:int user[100];

誰也不知道100到底表示什么含義,你可以定義一個宏來表示其含義,比如大用戶數(shù)量MAX_USER。若程序中突然出現(xiàn)for(i = 0;i < 100;i++)這樣的代碼,你或許根本不知道100表示什么含義。再或者你要改變這個值,100出現(xiàn)幾次就需要修改幾個位置 ,這就是硬編碼帶來的后果。

4.頭文件中的預(yù)編譯

當(dāng)多個文件同時包含一個頭文件的時候,#ifndef是個很關(guān) 鍵的東西。它能避免重復(fù)包含頭文件所帶來的命名沖突。

一般的格式如下:

在/fad/cde.h文件中

#ifndef FAD_CDE_H
        #define FAD_CDE_H
        .....
        #endif

五、函數(shù)

1.對于所調(diào)用的函數(shù)的錯誤返回碼,要進(jìn)行仔細(xì),全面的處理。

2.函數(shù)的規(guī)模盡量限制在200行以內(nèi)。

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

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

六、頭文件和源文件

一般來說,頭文件中是聲明,源文件中是定義。源文件要編譯成庫文件,若別人要使用你的函數(shù),就要引用你的頭文件,所以頭文件一般是變量、宏定義、枚舉、結(jié)構(gòu)和函數(shù)接口的聲明,源文件則是實現(xiàn)的細(xì)節(jié)。

頭文件和源文件大的用處就是聲明和實現(xiàn)分開。直接把函數(shù)實現(xiàn)寫到頭文件中是很不好的習(xí)慣。

發(fā)表評論
評論列表(網(wǎng)友評論僅供網(wǎng)友表達(dá)個人看法,并不表明本站同意其觀點或證實其描述)