色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区

當(dāng)前位置: > 華清遠(yuǎn)見教育科技集團(tuán) > 嵌入式學(xué)習(xí) > 講師博文 > C編碼規(guī)范
C編碼規(guī)范
時(shí)間: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)生的浪費(fèi)大家時(shí)間的制度。統(tǒng)一的編碼風(fēng)格,可以讓別人很容易理解代碼意圖,進(jìn)而快速使用和二次開發(fā),大大節(jié)約開發(fā)時(shí)間。并且極大的簡化了代碼維護(hù),減少了維護(hù)成本。

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

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

如何編寫代碼

注釋

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

文件或者模塊的注釋

對于一個(gè)文件或模塊注釋,應(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)鍵。以下是代碼排版需要主動的事項(xiàng)。

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

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

例如:

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

        Pop_list(list);

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

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

例如:

rect.length = 0;

rect.width = 0;

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

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

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

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

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

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

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

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

也可以采用linux通用的命名規(guī)范,采用‘_’分割短語命名一個(gè)變量,例如一個(gè)變量保存圖書數(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á)式的時(shí)候,要使用完備的括號。例如:

#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í)候,不允許參數(shù)發(fā)生變化。例如:

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

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

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

比如:int user[100];

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

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

當(dāng)多個(gè)文件同時(shí)包含一個(gè)頭文件的時(shí)候,#ifndef是個(gè)很關(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.一個(gè)函數(shù)僅完成一件事情,多功能的函數(shù),可能會使函數(shù)的理解、測試、維護(hù)變得困難。

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

六、頭文件和源文件

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

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

發(fā)表評論
評論列表(網(wǎng)友評論僅供網(wǎng)友表達(dá)個(gè)人看法,并不表明本站同意其觀點(diǎn)或證實(shí)其描述)
色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 久久久综合av| 精品亚洲男同gayvideo网站| 日本aⅴ大伊香蕉精品视频| 午夜精品视频网站| 欧美与欧洲交xxxx免费观看| 成人午夜小视频| 久久精品国产精品| 欧美理论电影在线观看| 大桥未久av一区二区三区| 久久久久久久影院| 欧美在线视频观看| 国产精品男人的天堂| 亚洲风情亚aⅴ在线发布| 永久免费看mv网站入口亚洲| 久久精品国产成人| 久久久久久久久久久亚洲| 国产99在线|中文| 亚洲经典中文字幕| 日韩一区二区av| 欧美国产日韩一区二区| 日韩av大片在线| 亚洲激情在线视频| 日韩中文有码在线视频| 国内伊人久久久久久网站视频 | 国产精品免费看久久久香蕉| 亚洲最大福利网| 日韩在线视频导航| 97av视频在线| 亚洲国产精品久久精品怡红院| 色悠悠久久久久| 日本欧美黄网站| 一本久久综合亚洲鲁鲁| 日韩欧美综合在线视频| 国产综合视频在线观看| 少妇高潮久久久久久潘金莲| 97久久精品国产| 亚洲欧美在线x视频| 久久久久久久爱| 日韩精品免费电影| 欧美激情视频免费观看| 亚洲free性xxxx护士hd|