- C語(yǔ)言基礎(chǔ)之編碼規(guī)范 推薦度:
- 相關(guān)推薦
C語(yǔ)言的編碼規(guī)范
C 語(yǔ)言可以像匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。下面是小編分享的C語(yǔ)言的編碼規(guī)范,一起來(lái)看看吧。
1. 基本要求
1.1 程序結(jié)構(gòu)清析,簡(jiǎn)單易懂,單個(gè)函數(shù)的程序行數(shù)不得超過(guò)100行。
1.2 打算干什么,要簡(jiǎn)單,直接了當(dāng),代碼精簡(jiǎn),避免垃圾程序。
1.3 盡量使用標(biāo)準(zhǔn)庫(kù)函數(shù)和公共函數(shù)。
1.4 不要隨意定義全局變量,盡量使用局部變量。
1.5 使用括號(hào)以避免二義性。
2.可讀性要求
2.1 可讀性第一,效率第二。
2.2 保持注釋與代碼完全一致。
2.3 每個(gè)源程序文件,都有文件頭說(shuō)明,說(shuō)明規(guī)格見(jiàn)規(guī)范。
2.4 每個(gè)函數(shù),都有函數(shù)頭說(shuō)明,說(shuō)明規(guī)格見(jiàn)規(guī)范。
2.5 主要變量(結(jié)構(gòu)、聯(lián)合、類(lèi)或?qū)ο螅┒x或引用時(shí),注釋能反映其含義。
2.7 常量定義(DEFINE)有相應(yīng)說(shuō)明。
2.8 處理過(guò)程的每個(gè)階段都有相關(guān)注釋說(shuō)明。
2.9 在典型算法前都有注釋。
2.10 利用縮進(jìn)來(lái)顯示程序的邏輯結(jié)構(gòu),縮進(jìn)量一致并以Tab鍵為單位,定義Tab為 6個(gè)字節(jié)。
2.11 循環(huán)、分支層次不要超過(guò)五層。
2.12 注釋可以與語(yǔ)句在同一行,也可以在上行。
2.13 空行和空白字符也是一種特殊注釋。
2.14 一目了然的語(yǔ)句不加注釋。
2.15 注釋的作用范圍可以為:定義、引用、條件分支以及一段代碼。
2.16 注釋行數(shù)(不包括程序頭和函數(shù)頭說(shuō)明部份)應(yīng)占總行數(shù)的 1/5 到 1/3 。
3. 結(jié)構(gòu)化要求
3.1 禁止出現(xiàn)兩條等價(jià)的支路。
3.2 禁止GOTO語(yǔ)句。
3.3 用 IF 語(yǔ)句來(lái)強(qiáng)調(diào)只執(zhí)行兩組語(yǔ)句中的一組。禁止 ELSE GOTO 和 ELSE RETURN。
3.4 用 CASE 實(shí)現(xiàn)多路分支。
3.5 避免從循環(huán)引出多個(gè)出口。
3.6 函數(shù)只有一個(gè)出口。
3.7 不使用條件賦值語(yǔ)句。
3.8 避免不必要的分支。
3.9 不要輕易用條件分支去替換邏輯表達(dá)式。
4. 正確性與容錯(cuò)性要求
4.1 程序首先是正確,其次是優(yōu)美
4.2 無(wú)法證明你的程序沒(méi)有錯(cuò)誤,因此在編寫(xiě)完一段程序后,應(yīng)先回頭檢查。
4.3 改一個(gè)錯(cuò)誤時(shí)可能產(chǎn)生新的錯(cuò)誤,因此在修改前首先考慮對(duì)其它程序的影響。
4.4 所有變量在調(diào)用前必須被初始化。
4.5 對(duì)所有的用戶輸入,必須進(jìn)行合法性檢查。
4.6 不要比較浮點(diǎn)數(shù)的相等,如: 10.0 * 0.1 == 1.0 , 不可靠
4.7 程序與環(huán)境或狀態(tài)發(fā)生 關(guān)系時(shí),必須主動(dòng)去處理發(fā)生的意外事件,如文件能否邏輯鎖定、打印機(jī)是否聯(lián)機(jī)等。
4.8 單元測(cè)試也是編程的一部份,提交聯(lián)調(diào)測(cè)試的程序必須通過(guò)單元測(cè)試。
5. 可重用性要求
5.1 重復(fù)使用的完成相對(duì)獨(dú)立功能的算法或代碼應(yīng)抽象為公共控件或類(lèi)。
5.2 公共控件或類(lèi)應(yīng)考慮OO思想,減少外界聯(lián)系,考慮獨(dú)立性或封裝性。
5.3 公共控件或類(lèi)應(yīng)建立使用模板。
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)型返回值以及它們的含義。
【C語(yǔ)言的編碼規(guī)范】相關(guān)文章:
C語(yǔ)言的編碼編譯12-04
C語(yǔ)言考點(diǎn)精選03-18
C語(yǔ)言試題03-28
C語(yǔ)言的應(yīng)用12-12
C語(yǔ)言的結(jié)構(gòu)12-12
什么是C語(yǔ)言03-19
C語(yǔ)言試題(精選)12-05
C語(yǔ)言和C++的分別11-26