C语言 程序代码编写规范
前言
一個(gè)好的程序編寫(xiě)規(guī)范是編寫(xiě)高質(zhì)量程序的保證。清晰、規(guī)范的源程序不僅僅是方便閱讀,更重要的是能夠便于檢查錯(cuò)誤,提高調(diào)試效率,從而最終保證軟件的質(zhì)量和可維護(hù)性。
說(shuō)明
l?本文檔主要適用于剛剛開(kāi)始接觸編程的初學(xué)者。
l?對(duì)于具有一定工程項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn)的程序員,建議學(xué)習(xí)C語(yǔ)言程序代碼編寫(xiě)規(guī)范—高級(jí)版。
目錄
1?代碼書(shū)寫(xiě)規(guī)范
2?注釋書(shū)寫(xiě)規(guī)范
3?命名規(guī)范
4?其它一些小技巧和要求
1?代碼書(shū)寫(xiě)規(guī)范
1.1函數(shù)定義
花括號(hào): { }
每個(gè)函數(shù)的定義和說(shuō)明應(yīng)該從第1列開(kāi)始書(shū)寫(xiě)。函數(shù)名(包括參數(shù)表)和函數(shù)體的花括號(hào)應(yīng)該各占一行。在函數(shù)體結(jié)尾的括號(hào)后面可以加上注釋,注釋中應(yīng)該包括函數(shù)名,這樣比較方便進(jìn)行括號(hào)配對(duì)檢查,也可以清晰地看出來(lái)函數(shù)是否結(jié)束。
范例1:函數(shù)的聲明
void?matMyFunction(int?n)
{
……
}?/*?matMyFunction*/
1.2空格與空行的使用
要加空格的場(chǎng)合
l?在逗號(hào)后面和語(yǔ)句中間的分號(hào)后面加空格,如:
int?i,?j,?k;
for?(i?=?0;?i?<?n;?i++)
result?=?func(a,?b,?c);
l?在二目運(yùn)算符的兩邊各留一個(gè)空格,如
a?>?b????a?<=?b??i?=?0
l?關(guān)鍵字兩側(cè),如if?()?…,?不要寫(xiě)成if()?…
l?類(lèi)型與指針說(shuō)明符之間一定要加空格:
char?*szName;
不加空格的場(chǎng)合
l?在結(jié)構(gòu)成員引用符號(hào).和->左右兩加不加空格:
pStud->szName,??Student.nID
l?不在行尾添加空格或Tab
l?函數(shù)名與左括號(hào)之間不加空格:
?func(…)
l?指針說(shuō)明符號(hào)*與變量名間不要加空格:
int?*pInt;?不要寫(xiě)成:?int?*?pInt;
l?復(fù)合運(yùn)算符中間不能加空格,否則會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤,如:
a?+?=?b??????a?<?=?b????都是錯(cuò)誤的
空行與換行
l?函數(shù)的變量說(shuō)明與執(zhí)行語(yǔ)句之間加上空行;
l?每個(gè)函數(shù)內(nèi)的主要功能塊之間加空行表示區(qū)隔;
l?不要在一行中寫(xiě)多條語(yǔ)句.
范例2:空行與換行
int?main()
{
????int?i,?j,?nSum?=?0;??//變量說(shuō)明
????
????for?(i?=?0;?i?<?10;?i++)??//執(zhí)行代碼
????{
for?(j?=?0;?j?<?10;?j++)
{
?????nSum?+=?i;
}
????}
}
1.3縮進(jìn)的設(shè)置
根據(jù)語(yǔ)句間的層次關(guān)系采用縮進(jìn)格式書(shū)寫(xiě)程序,每進(jìn)一層,往后縮進(jìn)一層
有兩種縮進(jìn)方式:1,使用Tab鍵;2,采用4個(gè)空格。
整個(gè)文件內(nèi)部應(yīng)該統(tǒng)一,不要混用Tab鍵和4個(gè)空格,因?yàn)椴煌木庉嬈鲗?duì)Tab鍵的處理方法不同。
1.4折行的使用
·?每行的長(zhǎng)度不要超過(guò)80個(gè)字符,當(dāng)程序行太長(zhǎng)時(shí),應(yīng)該分行書(shū)寫(xiě)。
·?當(dāng)需要把一個(gè)程序行的內(nèi)容分成幾行寫(xiě)時(shí),操作符號(hào)應(yīng)該放在行末。
·?分行時(shí)應(yīng)該按照自然的邏輯關(guān)系進(jìn)行,例如:不要把一個(gè)簡(jiǎn)單的邏輯判斷寫(xiě)在兩行上。
·?分行后的縮進(jìn)應(yīng)該按照程序的邏輯關(guān)系進(jìn)行對(duì)齊。例如:參數(shù)表折行后,下面的行應(yīng)該在參數(shù)表左括號(hào)的下方。
范例2:折行的格式
dwNewShape?=?matAffineTransform(coords,?translation,
??rotation);
if?(((new_shape.x?>?left_border)?&&
(new_shape.x?<?right_border))?&&
((new_shape.y?>?bottom_border)?&&
(new_shape.y?<?top_border)))
{
????draw(new_shape);
}
1.5嵌套語(yǔ)句(語(yǔ)句塊)的格式
對(duì)于嵌套式的語(yǔ)句--即語(yǔ)句塊(如,if、while、for、switch等)應(yīng)該包括在花括號(hào)中。花括號(hào)的左括號(hào)應(yīng)該單獨(dú)占一行,并與關(guān)鍵字對(duì)齊。建議即使語(yǔ)句塊中只有一條語(yǔ)句,也應(yīng)該使用花括號(hào)包括,這樣可以使程序結(jié)構(gòu)更清晰,也可以避免出錯(cuò)。建議對(duì)比較長(zhǎng)的塊,在末尾的花括號(hào)后加上注釋以表明該語(yǔ)言塊結(jié)束。
范例3:嵌套語(yǔ)句格式
if?(value?<?max)?
{
????if?(value?!=?0)
????{
?????????func(value);
????}
}
}?else?{
????error("The?value?is?too?big.");
}?/*?if?(value?<?max)?*/
2?注釋書(shū)寫(xiě)規(guī)范
注釋必須做到清晰,準(zhǔn)確地描述內(nèi)容。對(duì)于程序中復(fù)雜的部分必須有注釋加以說(shuō)明。注釋量要適中,過(guò)多或過(guò)少都易導(dǎo)致閱讀困難。
2.1注釋風(fēng)格
·?C語(yǔ)言中使用一組(/*?…?*/)作為注釋界定符。
·?注釋內(nèi)容盡量用英語(yǔ)方式表述。
·?注釋的基本樣式參考范例4。
·?注釋?xiě)?yīng)該出現(xiàn)在要說(shuō)明的內(nèi)容之前,而不應(yīng)該出現(xiàn)在其后。
·?除了說(shuō)明變量的用途和語(yǔ)言塊末尾使用的注釋,盡量不使用行末的注釋方式。
范例4:幾種注釋樣式
/*
*?************************************************
*?強(qiáng)調(diào)注釋
*?************************************************
*/
/*
*?塊注釋
*/
/*?單行注釋?*/
//單行注釋
int?i;?/*行末注釋*/
2.2何時(shí)需要注釋
·?如果變量的名字不能完全說(shuō)明其用途,應(yīng)該使用注釋加以說(shuō)明。
·?如果為了提高性能而使某些代碼變得難懂,應(yīng)該使用注釋加以說(shuō)明。
·?對(duì)于一個(gè)比較長(zhǎng)的程序段落,應(yīng)該加注釋予以說(shuō)明。如果設(shè)計(jì)文檔中有流程圖,則程序中對(duì)應(yīng)的位置應(yīng)該加注釋予以說(shuō)明。
·?如果程序中使用了某個(gè)復(fù)雜的算法,建議注明其出處。
·?如果在調(diào)試中發(fā)現(xiàn)某段落容易出現(xiàn)錯(cuò)誤,應(yīng)該注明。
3 命名規(guī)范
3.1常量、變量命名
l?符號(hào)常量的命名用大寫(xiě)字母表示。如:
#define?LENGTH?10
l?如果符號(hào)常量由多個(gè)單詞構(gòu)成,兩個(gè)不同的單詞之間可以用下劃線連接。如:
#define?MAX_LEN?50
變量命名的基本原則:
l?可以選擇有意義的英文(小寫(xiě)字母)組成變量名,使人看到該變量就能大致清楚其含義。
l?不要使用人名、地名和漢語(yǔ)拼音。
l?如果使用縮寫(xiě),應(yīng)該使用那些約定俗成的,而不是自己編造的。
l?多個(gè)單詞組成的變量名,除第一個(gè)單詞外的其他單詞首字母應(yīng)該大寫(xiě)。如:
dwUserInputValue。
3.2函數(shù)命名
函數(shù)命名原則與變量命名原則基本相同。對(duì)于初學(xué)者,函數(shù)命名可以采用“FunctionName”的形式。
4 其它一些小技巧和要求
l?函數(shù)一般情況下應(yīng)該少于100行
l?函數(shù)定義一定要包含返回類(lèi)型,沒(méi)有返回類(lèi)型加void
l?寫(xiě)比較表達(dá)式時(shí),將常量放在左邊
10?==?n
NULL?!=?pInt
l?指針變量總是要初始或重置為NULL
l?使用{}包含復(fù)合語(yǔ)句,即使是只有一行,如:
if?(1?==?a)
{
????x?=?5;
}總結(jié)
以上是生活随笔為你收集整理的C语言 程序代码编写规范的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: windows环境搭建hadoop
- 下一篇: 做技术知道了哪些事情代表自己成熟了?