C語(yǔ)言編碼規(guī)范
1 排版規(guī)則
1) 程序應(yīng)采用縮進(jìn)風(fēng)格編寫(xiě),每層縮進(jìn)使用一個(gè)制表位(TAB),類(lèi)定義、方法都應(yīng)頂格書(shū)寫(xiě);
2) 源程序建議使用英文書(shū)寫(xiě),盡量不含有中文。每行不超過(guò)80字符。對(duì)于較長(zhǎng)的語(yǔ)句(>80字符)要分成多行書(shū)寫(xiě),長(zhǎng)表達(dá)式要在低優(yōu)先級(jí)操作符處劃分新行,操作符放在新行之首,劃分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語(yǔ)句可讀;循環(huán)、判斷等語(yǔ)句中若有較長(zhǎng)的表達(dá)式或語(yǔ)句,則要進(jìn)行適應(yīng)的劃分;
3) 左花括號(hào)要另起一行,不能跟在上一行的行末;
4) 一個(gè)變量定義占一行,一個(gè)語(yǔ)句占一行;
5) 對(duì)獨(dú)立的程序塊之間、變量說(shuō)明之后必須加空行;
6) 在結(jié)構(gòu)成員賦值等情況,等號(hào)對(duì)齊,最少留一個(gè)空格;
7) 若函數(shù)或過(guò)程中的參數(shù)較長(zhǎng),則要進(jìn)行適當(dāng)?shù)膭澐帧?/p>
8) 形參的排序風(fēng)格:
? 最常使用的參數(shù)放在第一位;
? 輸入?yún)?shù)列表應(yīng)放在輸出參數(shù)列表的左邊;
? 將通用的參數(shù)放在特殊的參數(shù)的左邊。
2 命名規(guī)范
2.1 應(yīng)用程序的命名
“系統(tǒng)簡(jiǎn)稱”+模塊名稱
2.2 子模塊的命名
每個(gè)子模塊的名字應(yīng)該由描述模塊功能的1-3以單詞組成。每個(gè)單詞的首字母應(yīng)大寫(xiě)。在這些單詞中可以使用一些較通用的縮寫(xiě)。
2.3 變量的命名
變量的命名的基本原則是使得變量的含義能夠從名字中直接理解。可以用多個(gè)英文單詞拼寫(xiě)而成,每個(gè)英文單詞的首字母要大寫(xiě),其中英文單詞有縮寫(xiě)的可用縮寫(xiě);變量的前綴表示該變量的類(lèi)型;對(duì)于作用域跨越10行以上的變量名稱不能少于4個(gè)字符,除循環(huán)變量,累加變量外不得使用I、j、k等名稱的變量。變量分為取全局變量和局部變量,對(duì)于全局變量以加前綴“g_”來(lái)區(qū)分。
使用有意義的英語(yǔ)單詞,使用大小寫(xiě)分隔,每個(gè)單詞的第一個(gè)字母為大寫(xiě)
考慮到習(xí)慣性和簡(jiǎn)潔性,對(duì)于按常規(guī)使用的局部變量允許采用極短的名字,如用n、i作為循環(huán)變量,p、q作為指針等。另外,要注意的是:全局變量在程序中不要定義太多,能用局部變量的就用局部變量。如果要使用相關(guān)的變量,建議采用類(lèi)的方式或者結(jié)構(gòu)的方式存放,以減少具體變量的個(gè)數(shù)。
2.4 常量的命名
常量所有的字母均為大寫(xiě)。并且單詞之間使用下劃線”_”隔開(kāi)。
2.5 函數(shù)/過(guò)程的命名
函數(shù)/過(guò)程名稱應(yīng)該盡量使用能夠表達(dá)函數(shù)功能的英文名稱,函數(shù)名稱中應(yīng)該禁止使用如同function1,function2等含義不清的名稱。單詞間應(yīng)該使用大小寫(xiě)分隔。全局函數(shù)/過(guò)程名稱以“g_”前綴開(kāi)始。
2.6 接口命名
接口名稱要以大寫(xiě)字母開(kāi)頭。如果接口包含多個(gè)單詞,每個(gè)單詞的首字母大寫(xiě),其他字母小寫(xiě),如果,這些單詞是縮略語(yǔ)(例如XML),也要首字母大寫(xiě),其他字母小寫(xiě)(寫(xiě)為Xml)。
2.7 類(lèi)的命名
類(lèi)名稱要以大寫(xiě)字母開(kāi)頭;
類(lèi)名稱如果包含多個(gè)單詞,每個(gè)單詞的首字母要大寫(xiě),其他字母小寫(xiě);如果這些單詞是縮略語(yǔ)(例如XML),也要首字母大寫(xiě),其他字母小寫(xiě)(寫(xiě)作Xml);
類(lèi)名稱應(yīng)該是一個(gè)名詞或名詞短語(yǔ);
類(lèi)成員變量的命名規(guī)則與上述規(guī)則相同,但是要以“m_”開(kāi)始,表示其為成員變量(Member);
類(lèi)名稱不能出現(xiàn)下劃線。
2.8 方法的命名
方法名稱以小寫(xiě)字母開(kāi)頭。
方法名稱如果包含多個(gè)單詞,除了第一個(gè)單詞外,每個(gè)單詞的首字母大寫(xiě),其它字
母小寫(xiě)。如果這些單詞是縮略語(yǔ)(例如XML),也要首字母大寫(xiě),其它字母小寫(xiě)(寫(xiě)作Xml)。
方法名稱應(yīng)該是一個(gè)動(dòng)詞或動(dòng)名詞短語(yǔ),意思是“完成什么功能”,“執(zhí)行什么操作”。
2.9 數(shù)據(jù)庫(kù)的命名
2.9.1 表:
采用“模塊名簡(jiǎn)稱+前綴+’_’+表名”的命名規(guī)則。表名以能理解該表的內(nèi)容為原則,
可由中文表示,也可由代表此表含義的英文字母組成;首字母大寫(xiě);前綴代表此表類(lèi)別。
2.9.2 視圖:
采用“模塊名+’_’+視圖名+’視圖’”的命名規(guī)則,通常由8個(gè)以內(nèi)漢字組成。
2.9.3 存儲(chǔ)過(guò)程:
采用“Proc+模塊名+’_’+存儲(chǔ)過(guò)程名”的命名規(guī)則。
2.9.4 觸發(fā)器:
采用“模塊名+’’+觸發(fā)類(lèi)型+’’+表名”的命名規(guī)則,如果有多個(gè)觸發(fā)類(lèi)型,則可以疊加在一起。
2.9.5 字段:
字段的命名以能理解該字段的含義為原則,通常由多個(gè)英文單詞加前綴拼寫(xiě)而成,而組成字段名稱的首字母應(yīng)大寫(xiě)。單詞有縮寫(xiě)的可用縮寫(xiě)。字段的前綴表示該字段的數(shù)據(jù)類(lèi)型,其取值詳見(jiàn)“數(shù)據(jù)類(lèi)型”描述。原則上,字段的命名長(zhǎng)度不超過(guò)18字節(jié);描述字段的中文名稱,用數(shù)據(jù)庫(kù)創(chuàng)建工具設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),需要輸入。
3 參數(shù)的約定
3.1 輸入?yún)?shù)的約定
有些函數(shù)有輸入?yún)?shù),這些參數(shù)指由函數(shù)外部(調(diào)用者)輸入,并在函數(shù)內(nèi)部使用。在函數(shù)業(yè)務(wù)流程說(shuō)明后跟輸入?yún)?shù)說(shuō)明區(qū),用“輸入?yún)?shù)”或“Input Parameters”標(biāo)記。在參數(shù)名列表中的每個(gè)參數(shù)后增加該參數(shù)的注釋。
3.2 輸出參數(shù)的約定
有些函數(shù)有輸出參數(shù),這些參數(shù)指由函數(shù)外部(調(diào)用者)定義,在函數(shù)內(nèi)部使用并返回給調(diào)用者的參數(shù)。在輸入?yún)?shù)說(shuō)明區(qū)后跟輸出參數(shù)說(shuō)明區(qū),用“輸出參數(shù)”或 “Output Parameters”標(biāo)記。在參數(shù)名列表中的每個(gè)參數(shù)后增加該參數(shù)的注釋。另外輸出參數(shù)一般以指針或應(yīng)用輸出。
3.3 返回值的約定
每個(gè)函數(shù)均有返回值,除非操作非常簡(jiǎn)單。對(duì)于有不同狀態(tài)的返回值,建議用long型的返回值,0為成功。對(duì)于出錯(cuò)類(lèi)返回值,在同一層次的模塊,用統(tǒng)一代碼表示。在輸出參數(shù)說(shuō)明區(qū)后跟返回值說(shuō)明區(qū),用“返回值”或“Return values”標(biāo)記。返回值說(shuō)明,要說(shuō)明各種不同類(lèi)型返回值以及它們的含義。
4 注釋約定
在軟件中對(duì)每個(gè)文件頭,自定義函數(shù)和變量,重要的處理過(guò)程都要有必要的注釋。
4.1 源程序頭的注釋和規(guī)范
每個(gè)源程序(包括存儲(chǔ)過(guò)程)必須有頭部說(shuō)明、版本說(shuō)明和函數(shù)結(jié)構(gòu)三個(gè)部分:
源程序頭部說(shuō)明
FileName:
Copy Right:
System:
Module:
Function:
See also:
Author:
Create Date: 本程序的外部名字(如 *.prg, *.cpp)
本文件所在的系統(tǒng)或工程的名字
本文件所在的功能模塊名稱
簡(jiǎn)要說(shuō)明本程序的功能
相關(guān)詳細(xì)設(shè)計(jì)文檔號(hào)
編碼人員
創(chuàng)建日期
源程序版本說(shuō)明
Editor:
Version:
Edit Date: 修改人員
版本號(hào)
修改日期
4.2 函數(shù)頭的注釋和規(guī)范
Name:
Function:
Input:
Output:
Return:
Syntax:
Env:
Calling: 函數(shù)名稱
簡(jiǎn)述函數(shù)或過(guò)程的功能
[參數(shù)1] - [說(shuō)明…]
[參數(shù)2] - [說(shuō)明…]
[參數(shù)1] - [說(shuō)明…]
[參數(shù)2] - [說(shuō)明…]
[返回碼1] - [說(shuō)明…]
[返回碼2] - [說(shuō)明…]
調(diào)用語(yǔ)法(可選)
環(huán)境要求和影響(可選的)
被調(diào)用的函數(shù)(可選的)
4.3 變量注釋
直接在變量后面注明變量的用途和取值約定,例如:
4.4 類(lèi)型定義注釋
指類(lèi)和記錄等等定義的注釋。在注釋中標(biāo)明定義的用途。
4.5 區(qū)的注釋
同一個(gè)類(lèi)的成員方法要求排列在一起,共同協(xié)作而實(shí)現(xiàn)同一個(gè)功能的函數(shù)和過(guò)程要求排列在一起。代碼通常使用幾個(gè)函數(shù)和過(guò)程來(lái)實(shí)現(xiàn)某一項(xiàng)功能,這時(shí)候需要使用區(qū)注釋將這些具有共同目的的函數(shù)和過(guò)程標(biāo)明出來(lái)。
使用整行的”*”作為隔離行,讓程序清晰可讀。
一般刪除的代碼不建議直接刪除,最好用“//”注釋起來(lái)。
4.6 代碼中的注釋
在代碼中要求注釋的地方有:
? 代碼中的關(guān)鍵部分;
? 在使用特殊算法或者邏輯性較強(qiáng)的代碼;
? 在修改或刪除代碼部分,需要加注釋;修改/刪除人,目的。
5 變量的作用范圍
盡量做到縮小變量的作用范圍,對(duì)于變量是指針的,應(yīng)遵循以下約定:
? 在局部分配的空間在局部釋放。
? 函數(shù)體內(nèi)不能分配空間并將空間指針作為函數(shù)參數(shù)返回。
? 動(dòng)態(tài)全局空間在程序結(jié)束時(shí)一定要釋放。
? 所有動(dòng)態(tài)分配的空間在對(duì)應(yīng)層次的模塊釋放,并且用完馬上釋放。不重復(fù)釋放相
同的指針。
6 函數(shù)/過(guò)程的定義
在函數(shù)的定義處應(yīng)當(dāng)增加本函數(shù)的功能描述的注釋。用一句話描述清楚功能。可用英文或中文。功能注釋格式要求所有代碼一致。
7 函數(shù)業(yè)務(wù)流程的定義
在函數(shù)功能描述后,要增加函數(shù)的主要業(yè)務(wù)流程注釋。可以用多行描述,以解釋清楚業(yè)務(wù)流程為主。可用英文或中文。業(yè)務(wù)流程注釋格式要求所有代碼一致。
業(yè)務(wù)流程注釋可以盡量詳細(xì),注釋的長(zhǎng)度可以與代碼長(zhǎng)度差不多,但是不要太長(zhǎng)。
比如處理N階乘的函數(shù)業(yè)務(wù)流程定義如下:
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137726 -
編碼
+關(guān)注
關(guān)注
6文章
957瀏覽量
54953
原文標(biāo)題:【初識(shí)C語(yǔ)言之第二篇】編碼規(guī)范
文章出處:【微信號(hào):cyuyanxuexi,微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論