CC++程序編碼規(guī)范_第1頁
CC++程序編碼規(guī)范_第2頁
CC++程序編碼規(guī)范_第3頁
CC++程序編碼規(guī)范_第4頁
CC++程序編碼規(guī)范_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

C/C++程序編碼規(guī)范

BBTNL.COM有限責(zé)任公司研發(fā)中心

二。一六年三月

修改記錄:

日期版本說明編制/修改人

2007-1-15V0.1初稿編制完成。BBTNL

2007-1-30VI.0軟件組討論通過,并正式發(fā)布實(shí)施。BBTNL

2011-1-20VI.1修改為公司研發(fā)部規(guī)范。BBTNL

2016-3-14VI.2修訂部分內(nèi)容,改為研發(fā)中心規(guī)范。XXX

前言

軟件編程規(guī)范的目的是為了統(tǒng)一軟件編程風(fēng)格,提高軟件源程序的可讀性、可靠性和

可重用性,提高軟件源程序的質(zhì)量和可維護(hù)性,減少軟件維護(hù)成本,最終提高軟件產(chǎn)品生

產(chǎn)力。

本規(guī)范是針對C/C++語言的編程規(guī)則,其它編程語言可以參照此規(guī)范執(zhí)行。本規(guī)范適

用于本中心所有產(chǎn)品的軟件源程序,同時(shí)考慮到不同產(chǎn)品和項(xiàng)目的實(shí)際開發(fā)特性,本規(guī)范

分成規(guī)則性和建議性兩種:對于規(guī)則性規(guī)范,要求所有軟件開發(fā)人員嚴(yán)格執(zhí)行;對于建議

性規(guī)范,各項(xiàng)目編程人員可以根據(jù)實(shí)際情況選擇執(zhí)行。本規(guī)范的示例都以C/C++語言描述。

本規(guī)范的內(nèi)容包括:基本原則、文件結(jié)構(gòu)、程序的版式、注釋、命名規(guī)則、變量常量

與類型、表達(dá)式和語句、函數(shù)設(shè)計(jì)、可靠性、可測試性等。規(guī)范最后給出了標(biāo)準(zhǔn)模板供軟

件人員參考。

本規(guī)范自生效日期起,對以后新編寫的和修改的代碼有約束力。對以前的代碼不要求

進(jìn)行修改。對于由開發(fā)工具自動生成的代碼可以不約束。

對本規(guī)范中所使用的術(shù)語解釋如下:

原則:編程時(shí)應(yīng)該堅(jiān)持的指導(dǎo)思想。

規(guī)則:編程時(shí)必須遵守的約定。

建議:編程時(shí)必須加以考慮的約定。

說明:對此規(guī)則或建議的必要的解釋。

正例:對此規(guī)則或建議給出的正確例子。

反例:對此規(guī)則或建議給出的反面例子。

AAA電子研發(fā)中心

2016年03月

1

目錄

刖B...................................................1

目錄..............................................................1

第一章基本原則....................................................1

第二章文件結(jié)構(gòu)...................................................2

2.1版權(quán)和版本的聲明..............................................2

2.2頭文件的結(jié)構(gòu)..................................................2

2.3定義文件的結(jié)構(gòu)................................................3

2.4文件結(jié)構(gòu)的規(guī)則和建議..........................................3

第三章程序的版式.................................................5

3.1空行..........................................................5

3.2代碼行........................................................6

3.3代碼行內(nèi)的空格................................................6

3.4對齊..........................................................8

3.5長行拆分......................................................9

3.6修飾符的位置.................................................10

3.7預(yù)處理命令...................................................10

第四章注釋.......................................................12

第五章命名規(guī)則..................................................15

第六章變量、常量與類型.........................................19

6.1變量與常量...................................................19

6.2類型.........................................................22

第七章表達(dá)式和語句.............................................27

7.1運(yùn)算符的優(yōu)先級...............................................27

7.2操作符.......................................................28

7.3復(fù)合表達(dá)式...................................................28

7.4if語句.....................................................29

7.5循環(huán)語句的效率...............................................31

7.6for語句的循環(huán)控制變量......................................32

7.7switch語句.................................................33

7.8while語句..................................................34

7.9goto語句...................................................35

第八章函數(shù)設(shè)計(jì)..................................................36

1

8.1參數(shù).........................................................36

8.2返回值.......................................................37

8.3函數(shù)內(nèi)部實(shí)現(xiàn)的規(guī)則...........................................39

8.4函數(shù)調(diào)用.....................................................42

第九章可靠性....................................................45

9.1內(nèi)存管理.....................................................45

9.2指針的使用...................................................46

9.3函數(shù).........................................................47

第十章可測試性..................................................48

附錄.............................................................51

附錄A頭文件模版(規(guī)范性模版)..................................51

附錄B實(shí)現(xiàn)文件模版(規(guī)范性模版)................................51

參考文獻(xiàn)..........................................................52

2

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

第一章基本原則

【原則1-1】首先是為人編寫程序,其次才是計(jì)算機(jī)。

這是軟件開發(fā)的基本要點(diǎn),軟件的生命周期貫穿產(chǎn)品的開發(fā)、測試、生產(chǎn)、用戶使用、

版本升級和后期維護(hù)等長期過程,只有易讀、易維護(hù)的軟件代碼才具有生命力。

【原則1-2]保持代碼的簡明清晰,避免過分的編程技巧。

簡單是最美。保持代碼的簡單化是軟件工程化的基本要求。不要過分追求技巧,否則

會降低程序的可讀性。

【原則1-3]所有的代碼盡量遵循ANSIC標(biāo)準(zhǔn)。

說明:

所有的代碼盡可能遵循ANSIC標(biāo)準(zhǔn),盡量不使用ANSIC未定義的或編譯器擴(kuò)展的功

能。

【原則1-4]編程時(shí)首先達(dá)到正確性,其次考慮效率。

編程首先考慮的是滿足正確性、健壯性、可維護(hù)性、可移植性等質(zhì)量因素,最后才考

慮程序的效率和資源占用。

【原則1-51避免或少用全局變量。

過多地使用全局變量,會導(dǎo)致模塊間的緊耦合,違反模塊化的要求。

【原則1-6]盡量避免使用goto語句。

【原則1-7]盡可能復(fù)用、修正老的代碼。

盡量選擇可借用的代碼,對其修改優(yōu)化以達(dá)到自身要求。

【原則1-8]減少同樣的錯(cuò)誤出現(xiàn)的次數(shù)。

事實(shí)上,我們無法做到完全消除錯(cuò)誤,但通過不懈的努力,可以減少同樣的錯(cuò)誤出現(xiàn)

的次數(shù)。

1

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

第二章文件結(jié)構(gòu)

每個(gè)C/C++程序通常分為兩個(gè)文件?一個(gè)文件用于保存程序的聲明

(declaration),稱為頭文件。另一個(gè)文件用于保存程序的實(shí)現(xiàn)(implementation),

稱為定義(definition)文件。

C/C++程序的頭文件以、'.h〃為后綴,C程序的定義文件以、'.c〃為后綴,C++程序的定

義文件通常以''.cpp〃為后綴(也有一些系統(tǒng)以、'.cc〃或'、.cxx〃為后綴)。

2.1版權(quán)和版本的聲明

版權(quán)和版本的聲明位于頭文件和定義文件的開頭,見示例2-1。

/***********************************************************

*Copyright(c)20xx,BBTNL.COM有限責(zé)任公司

*Allrightsreserved.

*

*文件名稱:filename.h

*當(dāng)前版本:2.0

*內(nèi)容摘要:簡要描述本文件的內(nèi)容

*其他說明:

*

*作者:輸入作者(或修改者)名字

*完成版本:1.0

*完成日期:20xx-xx-xx

*

*修改記錄L(當(dāng)文件版本發(fā)生較大變化的時(shí)候進(jìn)行記錄)

*修改日期:20xx-xx-xx

*版本號:2.0

*修改人:輸入修改者的名字

*移改內(nèi)容■:變更原因和內(nèi)容描述

**********************************************************/

示例2-1文件版權(quán)和版本的聲明

2.2頭文件的結(jié)構(gòu)

頭文件的結(jié)構(gòu)見示例2-2。

文件頭(參見示例2-1文件版權(quán)和版本的聲明)

#ifndef文件名_H(全大寫)

#define文件名_H

其他條件編譯選球

include(依次為標(biāo)準(zhǔn)庫頭文件、非標(biāo)準(zhǔn)庫頭文件)

常量定義

全局宏

全局?jǐn)?shù)據(jù)類型

全局函數(shù)原型

2

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

類定義

模板(template)(包括C++中的類模板和函數(shù)模板)

____#endif

示例2-2C/C++頭文件的結(jié)構(gòu)

2.3定義文件的結(jié)構(gòu)

定義文件的結(jié)構(gòu)參見示例2-3。

文件頭(參見示例2-1文件版權(quán)和版本的聲明)

修改歷史記錄(源碼修改記錄)

#include(依次為標(biāo)準(zhǔn)庫頭文件、非標(biāo)準(zhǔn)庫頭文件)

常量定義

文件內(nèi)部使用的宏

文件內(nèi)部使用的數(shù)據(jù)類型

全局變量

本地變量(即靜態(tài)全局變量)

局部函數(shù)原型

類的實(shí)現(xiàn)

全局函數(shù)實(shí)現(xiàn)

局部函數(shù)實(shí)現(xiàn)

示例2-3C++/C定義文件的結(jié)構(gòu)

2.4文件結(jié)構(gòu)的規(guī)則和建議

【規(guī)則2-1】遵循統(tǒng)一的布局順序來書寫頭文件和定義文件。

【規(guī)則2-2】使用注釋塊分離頭文件和定義文件中的各節(jié)。

正例:

/***********************************************************

*數(shù)據(jù)類型定義*

★****************************★★★★★★★★★★★★★★★★★★★★★★★★★★★★**/

typedefunsignedcharBOOLEAN;

*函數(shù)原型*

***********************************************************/

intdoSomething(void);

【規(guī)則2-3]為了防止頭文件被重復(fù)引用,必須使用ifndef/define/endif結(jié)構(gòu)產(chǎn)生

3

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

預(yù)處理塊。

【規(guī)則2-4】用尖括號<>引用標(biāo)準(zhǔn)庫頭文件,用雙引號””引用非標(biāo)準(zhǔn)頭文件。

【規(guī)則2-5】禁止在#include中使用絕對路徑。

說明:

在程序的其他地方(如project屬性設(shè)置、圖標(biāo)資源引用、數(shù)據(jù)文件路徑等)也應(yīng)該

使用相對路徑。

K建議2-1』頭文件中只存放''聲明",不存放''定義”。

R建議2-2》不提倡使用全局變量,盡量不要在頭文件中出現(xiàn)象externintvalue這

類聲明。

4

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

第三章程序的版式

版式雖然不會影響程序的功能,但會影響可讀性。程序的版式追求清晰、美觀,是程

序風(fēng)格的重要構(gòu)成因素。

3.1空行

空行起著分隔程序段落的作用??招械皿w(不過多也不過少)將使程序的布局更清晰。

【規(guī)則3-1]在每個(gè)類聲明之后、每個(gè)函數(shù)定義結(jié)束之后添加空行。

正例:

/*空行*/

voidfunctionl(...)

(

}

/*空行*/

voidfunction2(...)

)

/*空行*/

voidfunctions(...)

}

【規(guī)則3-2]在一個(gè)函數(shù)體內(nèi),邏揖上密切相關(guān)的語句之間不加空行,其它地方應(yīng)加空行

分隔。

正例:

/*空行*/

while(condition)

(

statementl;

/*空行*/

if(condition)

(

statement2;

)

else

(

statements;

)

/*空行*/

statement4;

5

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

3.2代碼行

【規(guī)則3-31一行代碼只做一件事情,如只定義一個(gè)變量,或只寫一條語句。

【規(guī)則3-4】if、for、while,do等語句自占一行,執(zhí)行語句不得緊跟其后。不論執(zhí)

行語句有多少都要加{}。這樣可以防止書寫失誤。

下表是風(fēng)格良好和不良的代碼行比較:

intwidth;/*寬度*//*寬度高度深度*/

intheight;/*高度*/intwidth,height,depth;

intdepth;/*深度*/

x=a+b;

y=c+d;x=a+b;y=c+d;z=e+f;

z=e+f;

if(width<height)

(if(width<height)doSomething();

doSomething();

}

for(init;condition;update)

(for(init;condition;update)

doSomething();doSomething();

)other();

/*空行*/

other();

注:左邊為風(fēng)格良好的代碼行,右邊為反l格不良的代碼行。

(建議3-12盡可能在定義變量的同時(shí)初始化該變量(就近原則)。

K建議3-2』源程序中關(guān)系較為緊密的代碼應(yīng)盡可能相鄰。

3.3代碼行內(nèi)的空格

【規(guī)則3-5】關(guān)鍵字之后要留空格。const、virtual、inline^case等關(guān)鍵字之后

至少要留一個(gè)空格,否則無法辨析關(guān)鍵字;if,for、while等關(guān)鍵字之后應(yīng)留一個(gè)空

格再跟左括號'("以突出關(guān)鍵字。

【規(guī)則3-6】函數(shù)名之后不要留空格,緊跟左括號'(,,以與關(guān)鍵字區(qū)別。

6

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

【規(guī)則3-71'(,向后緊跟,'),、',,、';,向前緊跟,緊跟處不留空格。

【規(guī)貝U3-8】之后要留空格,如function(x,1y,-Z)。如果不是一行的結(jié)束符

號,其后要留空格,如for_(init;-condition;-update)。

【規(guī)則3-9]賦值操作符、比較操作符、算術(shù)操作符、邏輯操作符、位域操作符,如

'、+=,,、、>=,,、、'<=〃、、'+"、'、*,,、'、¥,、''&&"、、'||"、、'八"等二元操作符的前后

應(yīng)當(dāng)加空格。

【規(guī)則3-10】一元操作符如(地址運(yùn)算符)等前后不加

空格。

【規(guī)則3-11]這類操作符前后不加空格。

【規(guī)則3-12]注釋與注釋內(nèi)容之間要用一個(gè)空格進(jìn)行分隔。

正例:

/*一注釋內(nèi)容一*/

//一注釋內(nèi)容

反例:

/*注釋內(nèi)容*/

//注釋內(nèi)容

K建議3-32對于表達(dá)式比較長的for語句和if語句,緊湊起見可以適當(dāng)?shù)厝サ粢恍┛?/p>

格。

正例:

如for~(i=0;-i<10;/++)和if_((a<=b)(c<=d))

下表是代碼行內(nèi)的空格的例子:

void^funcl(int^x,^int^y,_int-z);/*良好的風(fēng)格*/

void-funclj(int_x,int_y,int^z);/*不良的風(fēng)格*/

if_(yeaj>=-2000)/*良好的風(fēng)格*/

if(year>=2000)/*不良的風(fēng)格*/

((a>=b)_&&_(c<=d))/*良好的風(fēng)格*/

if(a>=b&&c<=d)/*不良的風(fēng)格*/

for_(i=0;-i++)/*良好的風(fēng)格*/

for(i=0;i<10;i++)/*不良的風(fēng)格*/

for_(i_=j0;JO;_ij++)/*過多的空格*/

7

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

/*良好的風(fēng)格*/

x=a<b?a:b;/*不良的風(fēng)格*/

int-*Xi=-&y;/*良好的風(fēng)格*/

int_*-Xi=_&_y;/*不良的風(fēng)格*/

array[5]j=-0;/*不要寫成array_[_=_0;*/

a.function();/*不要寫成a^.^function();*/

b->function();/*不要寫成btJ->CJfunction();*/

3.4對齊

【規(guī)則3-13]禁止使用TAB鍵,必須使用空格進(jìn)行縮進(jìn)??s進(jìn)為4個(gè)空格。

【規(guī)則3-14]程序的分界符'{,和'},應(yīng)獨(dú)占一行并且位于同一列,同時(shí)與引用它們的

語句左對齊。

do-while語句和結(jié)構(gòu)的類型化時(shí)可以例外,while條件和結(jié)構(gòu)名可與}在同一行。

【規(guī)則3-15]{}之內(nèi)的代碼塊在'{,右邊數(shù)格處左對齊。

【規(guī)則3-16]結(jié)構(gòu)型的數(shù)組、多維的數(shù)組如果在定義時(shí)初始化,按照數(shù)組的矩陣結(jié)構(gòu)分

行書寫。

正例:

intaiNumbers[4][3]=

1,1,1,

2,4,8,

3,9,27,

4,16,64

};

【規(guī)則3-171相關(guān)的賦值語句等號對齊。

正例:

tPDBRes.wHead=0;

tPDBRes.wTail=wMaxNumOfPDB-1;

tPDBRes.wFree=wMaxNumOfPDB;

tPDBRes.wAddress=wPDBAddr;

tPDBRes.wSize=wPDBSize;

K建議3-41在switch語句中,每一個(gè)case分支和default要用{}括起來,{}

中的內(nèi)容需要縮進(jìn)。

下表是風(fēng)格良好和不良的對齊比較。

8

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

voidfunction(intx)voidfunction(intx){

{.../*programcode*/

.../*programcode*/)

}

if(condition)if(condition){

(.../*programcode*/

.../*programcode*/)

}else{

else.../*programcode*/

{)

.../*programcode*/

)

for(init;condition;update)for(init;condition;update){

(.../*programcode*/

.../★programcode*/)

)

while(condition)while(condition){

{.../*programcode*/

.../*programcode*/}

)

如果出現(xiàn)嵌套的{},則使用縮進(jìn)對齊,如:

|

{

}

注:左邊為風(fēng)格良好的對齊,右邊為風(fēng)格不良的對齊。

3.5長行拆分

【規(guī)則3-18]程序中一行的代碼和注釋不能超過80列。

【規(guī)則3-19]長表達(dá)式要在低優(yōu)先級操作符處拆分成新行,操作符放在新行之首(以便

突出操作符)。拆分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語句可讀。

【規(guī)則3-20】函數(shù)聲明時(shí),類型與名稱不允許分行書寫。

正例:

externdoubleFARcalcArea(doubledWidth,doubledHeight);

反例:

externdoubleFAR

calcArea(doubledWidth,doubledHeight);

下表是長行的拆分示例:

if((very_longer_variablel>=very_longer_variablel2)

&&(very_longer_variable3<=very_longer_variablel4)

&&(verylongervariable5<=v6ryjLongervariablel6))

9

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

doSomething();

}

virtualCMatrixmultiplyMatrix(CMatrixleftMatrix,

CMatrixrightMatrix);

for(very_longer_initialization;

very_longer_condition;

very_longer_update)

(

doSomething();

}

3.6修飾符的位置

【規(guī)則3-21】應(yīng)當(dāng)將修飾符*和&緊靠變量名。

正例:

char*name;

int*x,y;/*此處y不會被誤解為指針*/

3.7預(yù)處理命令

【規(guī)則3-22]預(yù)處理命令應(yīng)與其他代碼一樣,采用垂直縮進(jìn)的編排格式。

說明:

為了明確地表明這是預(yù)處理命令,,獷符號仍然放在每行的第一列。

正例:

#ifdefDEBUG

#ifdefTRACE

#defineTRACKING1

#else

#defineTRACKING0

#endif/*TRACE*/

#endif/*DEBUG*/

【規(guī)則3-23]#define常量相當(dāng)于數(shù)據(jù)定義,應(yīng)該以相似的方式布局,垂直對齊,并按

功能分組。

正例:

#definePACKET_SIZE20

#defineBUF_SIZE_MAX256

#defineWIN^MASK-OxFOO

【規(guī)則3-24]多于一行的宏定義,與函數(shù)定義相似,其布局也應(yīng)相似,根據(jù)一行一個(gè)動

作的原則折行,并垂直對齊行尾的續(xù)行符,V。

說明:

始終用大括號把多行宏括起來,這可以避免在宏展開時(shí)出現(xiàn)難以察覺的錯(cuò)誤。

正例:

#defineTRACE_IN(fnName)\

10

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

if(TRACKING)

printf(''TraceEnter:%s\n〃,(fnName));

}

else

(

if(DEBUGGING)

debugPush(''EnteringFunction:z,,(fnName));\

)\

}

}

【規(guī)則3-25]禁止使用#undef命令。

說明:

重新定義宏使程序可讀性差,是不良的編程習(xí)慣。

11

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

第四章注釋

C語言的注釋符為C++語言中,程序塊的注釋常采用行注釋一

般采用注釋通常用于:

(1)版本、版權(quán)聲明;

(2)函數(shù)接口說明;

(3)重要的代碼行或段落提示。

雖然注釋有助于理解代碼,但注意不可過多地使用注釋。

【規(guī)則4-1]一般情況下,源程序有效注釋量必須在20%以上。

注釋是對代碼的''提示",而不是文檔。程序中的注釋不可喧賓奪主,注釋太多了會讓

人眼花繚亂。注釋的花樣要少。如果代碼本來就是清楚的,則不必加注釋。否則多此一舉,

令人厭煩,例如:

i++;/*i加1,多余的注釋*/

【規(guī)則4-2】邊寫代碼邊注釋,修改代碼同時(shí)修改相應(yīng)的注釋,保證注釋與代碼的一致性。

【規(guī)則4-3】注釋應(yīng)當(dāng)準(zhǔn)確、易懂,防止注釋有二義性。錯(cuò)誤的注釋不但無益反而有害。

【規(guī)則4-4】使用中文進(jìn)行注釋。盡量避免在注釋中使用縮寫,特別是不常用縮寫。

說明:

對于特殊要求的可以使用英文注釋,如工具不支持中文或國際化版本。

【規(guī)則4-5]注釋的位置應(yīng)與被描述的代碼相鄰,可以放在代碼的上方或右方(對單條語

句的注釋),不可放在下方,如放于上方則需與其上面的代碼用空行隔開。

【規(guī)則4-6]注釋與所描述內(nèi)容進(jìn)行同樣的縮排。

【規(guī)則4-7】當(dāng)代碼比較長,特別是有多重嵌套時(shí),應(yīng)當(dāng)在一些段落的結(jié)束處加注釋,便

于閱讀。

正例:

voidmain()

if(...)

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

while(...)

}/*endofwhile(...)*//*指明該條while語句結(jié)束*/

}/*endofif(...)*//*指明是哪條語句結(jié)束*/

}/*endofvoidmain()*//*指明函數(shù)的結(jié)束*/

【規(guī)則4-8】文件頭部必須進(jìn)行注釋,包括:.h文件、.c文件、.cpp文件、.inc文件、.def

文件、編譯說明文件.cfg等。

文件頭部的注釋內(nèi)容見2.1節(jié)。

【規(guī)則4-9】函數(shù)頭部應(yīng)進(jìn)行注釋,列出:函數(shù)的目的/功能、輸入?yún)?shù)、輸出參數(shù)、返

回值、訪問和修改的表、修改信息等。

說明:

下面是函數(shù)頭部的注釋格式:

/**************************************************************

*函數(shù)名稱:函數(shù)名稱

*功能描述:函數(shù)功能、性能等的描述

*輸入?yún)?shù):輸入?yún)?shù)說明,包括每個(gè)參數(shù)的作用、取值說明及參數(shù)間的關(guān)系

*輸出參數(shù):對輸出參數(shù)的說明

*返回值:函數(shù)返回值的說明

*其他說明:其他說明

*修改日期修改人修改內(nèi)容*

*20xx/xx/xxXXXXXXX

【規(guī)則4-10]全局變量要有詳細(xì)的注釋,包括對其功能、取值范圍、訪問信息及訪問時(shí)

注意事項(xiàng)等的說明。

正例:

/*

*變量作用:(錯(cuò)誤狀態(tài)碼)

*變量范圍:例如Q-SUCCESS1-Tableerror

*訪問說明:(訪問的函數(shù)以及方法)

*/

BYTEg_ucTranErrorCode;

【規(guī)則4-11】對分支語句(條件分支、循環(huán)語句等)必須編寫注釋。

【規(guī)則4-12】C語言的注釋符為C++語言中,程序塊的注釋采用

13

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

行注釋采用。

K建議4-12通過對函數(shù)或過程、變量、結(jié)構(gòu)等正確的命名以及合理地組織代碼結(jié)構(gòu),

使代碼成為自注釋的。

14

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

第五章命名規(guī)則

本章對程序中的所有標(biāo)識符(包括變量名、常量名、函數(shù)名、類名、結(jié)構(gòu)名、宏定義

等)的命名作出約定。

【規(guī)則5-1)函數(shù)名和變量名采用"首字母小寫,后面連接的單詞的首字母都大寫”的方

式。

說明:

專有名字(如CPU、DDR等)保持原有的寫法。

【規(guī)則5-2]標(biāo)識符要采用英文單詞或其組合,便于記憶和閱讀,切忌使用漢語拼音來命

名。

標(biāo)識符應(yīng)當(dāng)直觀且可以拼讀,可望文知義,避免使人產(chǎn)生誤解。程序中的英文單詞一

般不要太復(fù)雜,用詞應(yīng)當(dāng)準(zhǔn)確。

【規(guī)則5-3】標(biāo)識符只能由26個(gè)英文字母,10個(gè)數(shù)字,及下劃線的一個(gè)子集來組成,并

嚴(yán)格禁止使用連續(xù)的下劃線,下劃線也不能出現(xiàn)在標(biāo)識符頭或結(jié)尾(預(yù)編譯開關(guān)除外).

說明:

這樣做的目的是為了使程序易讀。因?yàn)関ariable_name和variable__name很

難區(qū)分,下劃線符號若出現(xiàn)在標(biāo)識符頭或結(jié)尾,容易與不帶下劃線的標(biāo)識符混淆。

【規(guī)則5-4】標(biāo)識符的命名應(yīng)當(dāng)符合''min-length&&max-information”原則。

說明:

較短的單詞可通過去掉''元音"形成縮寫,較長的單詞可取單詞的頭幾個(gè)字母形成縮

寫,一些單詞有大家公認(rèn)的縮寫,常用單詞的縮寫必須統(tǒng)一。協(xié)議中的單詞的縮寫與協(xié)議

保持一致。對于某個(gè)系統(tǒng)使用的專用縮寫應(yīng)該在某處做統(tǒng)一說明。

正例:

如下單詞的縮能夠被大家認(rèn)可:

temp可縮寫為tmp;

flag可縮寫為fig;

statistic可縮寫為stat;

increment可縮寫為inc;

message可縮寫為msg;

規(guī)定的常用縮寫如下:

常用詞縮寫

ArgumentArg

BufferBuf

ClearClr

ClockClk

CompareCmp

ConfigurationCfg

15

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

ContextCtx

DelayDly

DeviceDev

DisableDis

DisplayDisp

EnableEn

ErrorErr

FunctionFnct

HexadecimalHex

HighPriorityTaskHPT

I/OSystemIOS

InitializeInit

MailboxMbox

ManagerMgr

MaximumMax

MessageMsg

MinimumMin

MultiplexMux

OperatingSystemOS

OverflowOvf

ParameterParam

PointerPtr

PreviousPrev

PriorityPrio

ReadRd

ReadyRdy

RegisterReg

ScheduleSched

SemaphoreSem

StackStk

SynchronizeSync

TimerTmr

TriggerTrig

WriteWr

【規(guī)則5-5】程序中不要出現(xiàn)僅靠大小寫區(qū)分的相似的標(biāo)識符。

【規(guī)則5-6】用正確的反義詞組命名具有互斥意義的變量或相反動作的函數(shù)等。

說明:

下面是一些在軟件中常用的反義詞組。

add/removebegin/endcreate/destroyinsert/delete

first/lastget/releaseincrement/decrementput/get

add/deletelock/unlockopen/closemin/max

old/newstart/stopnext/previoussource/target

show/hidesend/receivesource/destinationcut/paste

up/down

【規(guī)則5-7】宏、常量名都要使用大寫字母,用下劃線分割單詞。

正例:

如DISP_BUF_SIZE>M1N_VALUE、MAX_VALUE等等。

16

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

【規(guī)則5-8】變量名長度應(yīng)小于31個(gè)字符,以保持與ANSIC標(biāo)準(zhǔn)一致。不得取單個(gè)字

符(如i、j、k等)作為變量名,但是局部循環(huán)變量除外。

說明:

變量,尤其是局部變量,如果用單個(gè)字符表示,很容易出錯(cuò)(如1誤寫成1),而編

譯時(shí)又檢查不出,則有可能增加排錯(cuò)時(shí)間。過長的變量名會增加工作量,會使程序的邏輯

流程變得模糊,給修改帶來困難,所以應(yīng)當(dāng)選擇精煉、意義明確的名字,才能簡化程序語

句,改善對程序功能的理解。

【規(guī)則5-9】程序中局部變量不要與全局變量重名。

說明:

盡管局部變量和全局變量的作用域不同而不會發(fā)生語法錯(cuò)誤,但容易使人誤解。

【規(guī)則5-10]使用一致的前綴來區(qū)分變量的作用域。

說明:

變量活動范圍前綴規(guī)范如下:

g_:全局變量(global)

s_:模塊內(nèi)靜態(tài)變量(static)

m_:類的數(shù)據(jù)成員(member)

$:局部變量不加范圍前綴

【規(guī)則5-111使用一致的小寫類型指示符作為前綴來區(qū)分變量的類型。

常用變量類型前綴列表如下:

iint

ffloat

ddouble

cchar

ucunsignedchar或BYTE

1long

ppointer

bBOOL

hHANDLE

wunsignedshort或WORD

dwDWORD或unsignedlong

a數(shù)組,arrayofTYPE

str字符串

t結(jié)構(gòu)類型

以上前綴可以進(jìn)一步組合,在進(jìn)行組合時(shí),數(shù)組和指針類型的前綴指示符必須放在變

量類型前綴的首位。

【規(guī)則5-12]完整的變量名應(yīng)由前綴+變量名主體組成,變量名的主體應(yīng)當(dāng)使用''名詞"

或者''形容詞+名詞”,且首字母必須大寫。

各種前綴字符可能組合使用,在這種情況下,各前綴順序?yàn)椋鹤兞孔饔糜蚯熬Y、變量

類型前綴。

正例:

floatg_fValue;/*類型為浮點(diǎn)數(shù)的全局變量*/

17

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

char*pc01dChar;/*類型為字符指針的局部變量*/

【規(guī)則5-13】函數(shù)名用單詞組合時(shí),應(yīng)當(dāng)使用''動詞"或者''動詞+名詞”(動賓詞組)。

函數(shù)名力求清晰、明了,通過函數(shù)名就能夠判斷函數(shù)的主要功能。函數(shù)命名采用大小

寫字母結(jié)合的形式,但專有名詞不受限制。

【規(guī)則5-14】結(jié)構(gòu)名、聯(lián)合名、枚舉名由前綴t開頭。

【規(guī)則5-15】事件名由前綴en開頭(event)。

【規(guī)則5-16]類名采用大小寫結(jié)合的方法。在構(gòu)成類名的單詞之間不用下劃線,類名在

開頭加上C,類的成員變量統(tǒng)一在前面加m_前綴。

C++Builder中的類名在開頭加T。

正例:

voidObject::setValue(intiWidth,intiHeight)

m_iWidth=iWidth;

m_iHeight=iHeight;

}一

【規(guī)則5-17]為了防止某一軟件庫中的一些標(biāo)識符和其它軟件庫中的沖突,可以為各種

標(biāo)識符加上能反映軟件性質(zhì)的前綴。

例如三維圖形標(biāo)準(zhǔn)OpenGL的所有庫函數(shù)均以gl開頭,所有常量(或宏定義)均以GL

開頭。

K建議5Tli盡量避免名字中出現(xiàn)數(shù)字編號,如valuel、value2等,除非邏輯上的確

需要編號。

【規(guī)則5-18]標(biāo)識符前不使用項(xiàng)目、產(chǎn)品、部門的標(biāo)識。

說明:這樣做的目的是為了代碼的可重用性。

18

凌久電子研發(fā)中心C/C+程序編碼規(guī)范

第六章變量、常量與類型

變量、常量和數(shù)據(jù)類型是程序編寫的基礎(chǔ),它們的正確使用直接關(guān)系到程序設(shè)計(jì)的成

敗,變量包括全局變量、局部變量和靜態(tài)變量,常量包括數(shù)據(jù)常量、常量類型數(shù)據(jù)和指針

常量,類型包括系統(tǒng)的數(shù)據(jù)類型和自定義數(shù)據(jù)類型。本章主要說明變量、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論