




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1/1C語言代碼書寫規(guī)范總則5.C語言書寫規(guī)范5.1符號命名規(guī)則5.1.1符號名包括常量名、標號名、子程序名等。
這些名字應(yīng)該能反映它所代表的實際東西,具有一定的意義,使其能夠見名知義,有助于對程序功能的理解。
命名采用匈牙利命名法。
規(guī)則如下:
(5.1.1.1)const變量,用大寫字母命名。
在復(fù)合詞里用下劃線隔開每個詞。
(5.1.1.2)復(fù)合詞中每個單詞的第一個字母大寫。
除了規(guī)則5.1.1.1以外,避免使用下劃線。
(5.1.1.4)函數(shù)名是復(fù)合詞的,第一個詞采用全部小寫,隨后每個單詞采用第一個字母大寫,其它字母小寫方式;如果是單個詞的,采用全部小寫方式。
(5.1.1.5)循環(huán)變量可采用i,j,k等,不受上述規(guī)則限制。
(5.1.1.7)全局變量詞頭為g_。
(5.1.1.8)臨時變量詞頭為tmp_。
(5.1.1.10)用小寫字母的前綴表示變量的類型,前綴的下一個字母用大寫。
表1詞頭類型詞頭類型iintegeruunsignedbboolppointerddoublesstring表2詞頭變量名詞頭變量名tasktasksigsignalsbbinarysemaphoreswdwatchdogsmmutualexclusionsemaphorestmtimersccountingsemaphoresmsgmessagepipepipe例:
#defineARRAY_SIZE24/*規(guī)則5.1.1.1*/intg_iFlag;classMyClass/*規(guī)則5.1.1.3*/{};voidsomeFunc()/*規(guī)則5.1.1.2和5.1.1.4*/{intnArray[ARRAY_SIZE];unsignedcharuchByte;charszName[];char*pszName=szName;}(5.1.1.11)有些詞頭(如p和u)可以和其它詞頭組合。
例:
WDOG_IDwdId;WDOG_IDg_wdId;/*全局watchdogId,故以g_開頭*/5.1.2名字的長度一般不要過長或過短。
過長的名字會增加工作量,使程序邏輯流程變得模糊;過短的名字無法表達符號的實際意義。
約定長度范圍:
3-31;5.2數(shù)據(jù)和函數(shù)說明5.2.1數(shù)據(jù)說明次序應(yīng)當(dāng)規(guī)范化,使數(shù)據(jù)屬性容易查找,也有利于測試、排錯和維護。
說明的先后次序應(yīng)固定,應(yīng)按邏輯功能排序,邏輯功能塊內(nèi)建議采用下列順序:
整型說明、實型說明、字符說明、邏輯量說明。
5.2.2如果設(shè)計了一個復(fù)雜的數(shù)據(jù)結(jié)構(gòu),應(yīng)當(dāng)通過注釋對其變量的含義、用途進行說明。
5.2.3在函數(shù)的聲明中使用異常聲明。
如:
voidf()throw(toobig,toosmall,divzero);在聲明一個函數(shù)時,將它所拋出的異常列出,便于函數(shù)的使用者了解可能會發(fā)生哪些異常。
5.3程序注釋5.3.1程序注釋是程序員與日后的程序讀者之間通信的重要手段之一,注釋分為文件注釋、函數(shù)注釋和功能注釋。
5.3.2正規(guī)程序的注釋應(yīng)注意:
注釋行的數(shù)量占到整個源程序的1/3到1/2。
5.3.3文件注釋位于整個源程序的最開始部分,注釋后空兩行開始程序正文。
它包括:
程序標題。
目的、功能說明。
文件作者、最后修改日期等說明。
例:
./********************************************************************(空一行)標題:Demo.c功能:測試VxWorks的各種系統(tǒng)調(diào)用.說明:該程序測試各種VxWorks的系統(tǒng)調(diào)用函數(shù)。
包括任務(wù)(taks)的創(chuàng)建、掛起及任務(wù)間通過信號燈實現(xiàn)同步,通過消息隊列進行通訊。
程序創(chuàng)建了兩個任務(wù):
一個高優(yōu)先級的任務(wù)和一個低優(yōu)先級的任務(wù)。
兩個任務(wù)間通過一個二進制的信號燈進行同步,通過消息隊列進行通訊。
當(dāng)前版本:
x.x修改信息:
2000.06.05John,InitialVersion2000.07.05Tom,Bugxxxxfixed**************************************************************/(空2行,開始程序正文)5.3.4函數(shù)注釋通常置于每函數(shù)或過程的開頭部分,它應(yīng)當(dāng)給出函數(shù)或過程的整體說明對于理解程序本身具有引導(dǎo)作用。
一般包括如下條目:
模塊標題。
有關(guān)本模塊功能和目的的說明。
調(diào)用格式接口說明:
包括輸入、輸出、返回值、異常。
算法。
如果模塊中采用了一些復(fù)雜的算法。
例:
file://(注釋開頭應(yīng)和上一函數(shù)空兩行)(注釋開頭與上一函數(shù)最后一行間隔兩行)/********************************************************************標題:
assignmentComplete功能:
BSC=MSC消息生成函數(shù),生成assignment_complete指配完成消息(BSMAP消息).格式:
intassignmentComplete(intiCellId,intiServiceChannnelNum,char*pszMSGData)throw(exception1,exception2)輸入:
intiCellId:MS所在的小區(qū)識別iCellId取值:
0x00-0xffintiServiceChannnelNum:
MS所占的業(yè)務(wù)信道號碼輸出:
char*pszMSGData:
指配完成消息數(shù)據(jù)返回值:0x00正常異常:
exception1異常情況1,exception2異常情況2********************************************************************/(注釋后直接開始程序正文,不空行。
)5.3.5功能性注釋嵌在源程序體中,用于描述其后的語句或程序段做什么工作,也就是解釋下面要做什么,或是執(zhí)行了下面的語句會怎么樣。
而不要解釋下面怎么做,因為解釋怎么做常常與程序本身是重復(fù)的。
例:
/*把amount加到total中*/total=amount+total;這樣的注釋僅僅是重復(fù)了下面的程序,對于理解它的工作并沒有什么作用。
而下面的注釋,有助于讀者理解。
/*將每月的銷售額amount加到年銷售額total中*/total=amount+total;5.4函數(shù)的長度函數(shù)編寫應(yīng)盡可能短小精悍,一般不超過兩屏,以便于調(diào)試和理解。
5.5語句結(jié)構(gòu)為保證語句結(jié)構(gòu)的清晰和程序的可讀性,在編寫軟件程序時應(yīng)注意以下幾個方面的問題:
在一行內(nèi)只寫一條語句,并采用空格、空行和移行保證清楚的視覺效果。
每一個嵌套的函數(shù)塊,使用一個TAB縮進(可以設(shè)定為4個空格),大括號必須放在條件語句的下一行,單獨成一行,便于匹對:
如,有一段程序如下:
for(i=1;in-1;i++){t=1;for(j=i+1;jn;j++){if(a[j]a[t])t=j;if(t!=i){work=a[t];a[t]=a[I];a[I]=work;}}}應(yīng)寫為for(i=1;in-1;i++){t=1;for(j=i+1;jn;j++){if(a[i]a[j])t=j;if(t!=1){work=a[t];a[t]=a[i];a[i]=work;}}}文件之中不得存在無規(guī)則的空行,比如說連續(xù)十個空行。
一般來講函數(shù)與函數(shù)之間的空行為2-3行;在函數(shù)體內(nèi)部,在邏輯上獨立的兩個函數(shù)塊可適當(dāng)空行,一般為1-2行。
程序編寫首先應(yīng)考慮清晰性,不要刻意追求技巧性而使得程序難以理解。
每行長度盡量避免超過屏幕寬度,應(yīng)不超過80個字符。
除非對效率有特殊要求,編寫程序要作到清晰第一,效率第二。
盡可能使用函數(shù)庫。
盡量用公共過程或子程序去代替重復(fù)的功能代碼段。
要注意,這個代碼應(yīng)具有一個獨立的功能,不要只因代碼形式一樣便將其抽出組成一個公共過程或子程序。
使用括號清晰地表達算術(shù)表達式和邏輯表達式的運算順序。
如將x=a*b/c*d寫成x=(a*b/c)*d可避免閱讀者誤解為x=(a*b)/(c*d)。
避免不必要的轉(zhuǎn)移。
避免采用過于復(fù)雜的條件測試。
避免過多的循環(huán)嵌套和條件嵌套。
建議不要使用*=,–,/=等運算符。
一個函數(shù)不要超過200行。
一個文件應(yīng)避免超過2000行。
盡量避免使用goto語句。
避免采用多賦值語句,如x=y=z;不鼓勵采用?:操作符,如z=(ab)?a:b;不要使用空的ifelse語句。
如if(cMychar=‘A)if(cMychar=‘Z)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023-2024學(xué)年統(tǒng)編版語文八年級下冊第一單元教學(xué)設(shè)計
- 2024年高中化學(xué) 第四章 電化學(xué)基礎(chǔ) 第四節(jié) 金屬的電化學(xué)腐蝕與防護教學(xué)實錄 新人教版選修4
- 2024年五年級數(shù)學(xué)上冊 5 簡易方程2解簡易方程練習(xí)課教學(xué)實錄 新人教版
- 2023七年級數(shù)學(xué)下冊 第4章 相交線與平行線4.5 垂線第1課時 垂線教學(xué)實錄 (新版)湘教版
- 2024四年級語文下冊第二單元解讀及教學(xué)設(shè)計
- 2024年五年級語文上冊 第五單元 17 松鼠教學(xué)實錄 新人教版
- 2024-2025學(xué)年新教材高中英語 Unit 3 The world meets China預(yù)習(xí) 新知早知道2(教用文檔)教學(xué)實錄 外研版選擇性必修第四冊
- 視網(wǎng)膜屏幕圖標高清顯示設(shè)置
- 8《從猜想到驗證》教學(xué)設(shè)計-2024-2025學(xué)年科學(xué)一年級上冊蘇教版
- 2023七年級地理上冊 第四章 世界的氣候 第二節(jié) 氣溫和降水教學(xué)實錄 (新版)湘教版
- 2025國家電投集團中國電力招聘8人筆試參考題庫附帶答案詳解
- 曲靖市出租汽車從業(yè)資格證區(qū)域科目考試題(附答案)
- 2025年安徽城市管理職業(yè)學(xué)院單招職業(yè)技能考試題庫匯編
- 《百日競渡、逆風(fēng)翱翔》2025年中考百日誓師動員哪吒精神班會課件
- 2025年湖南國防工業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫及參考答案
- 2025年湖南水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
- 2025年河南建筑職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫審定版
- 2025年湖南食品藥品職業(yè)學(xué)院單招職業(yè)傾向性測試題庫參考答案
- 2025年湖南水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫1套
- 2025年家政服務(wù)策劃免責(zé)聲明協(xié)議
- 2025新人教版語文七年級下冊《第四單元》大單元整體教學(xué)設(shè)計2022課標
評論
0/150
提交評論