版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧省縣域重點(diǎn)高中協(xié)作體2025屆高三上學(xué)期期末考試語文試題 含答案
- 2025年中國多功能金屬除銹防銹劑市場調(diào)查研究報(bào)告
- 2025至2031年中國多孔水插頭行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年中國沐浴噴水器數(shù)據(jù)監(jiān)測研究報(bào)告
- 二零二五年度產(chǎn)品發(fā)布會晚會舞臺建設(shè)及現(xiàn)場布置合同3篇
- 二零二五年度個(gè)人與企業(yè)個(gè)人間廣告代言合同范本3篇
- 2025版貼吧搜索結(jié)果頁面用戶體驗(yàn)優(yōu)化合同3篇
- 二零二五年度科研設(shè)備運(yùn)輸租賃與研發(fā)支持協(xié)議3篇
- 二零二五年度個(gè)人資產(chǎn)擔(dān)保合同樣本4篇
- 二零二五年度全國銷售業(yè)務(wù)員績效獎(jiǎng)勵(lì)協(xié)議書3篇
- 三年級數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)附答案
- 中醫(yī)診療方案腎病科
- 2025年安慶港華燃?xì)庀薰菊衅腹ぷ魅藛T14人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 人教版(2025新版)七年級下冊數(shù)學(xué)第七章 相交線與平行線 單元測試卷(含答案)
- 玩具有害物質(zhì)風(fēng)險(xiǎn)評估-洞察分析
- 2024年河南省公務(wù)員錄用考試《行測》真題及答案解析
- GB/T 44351-2024退化林修復(fù)技術(shù)規(guī)程
- 《軟件培訓(xùn)講義》課件
- 行政單位閑置資產(chǎn)清查盤活工作總結(jié)
- 完整2024年開工第一課課件
評論
0/150
提交評論