C語言代碼書寫規(guī)范總則_第1頁
C語言代碼書寫規(guī)范總則_第2頁
C語言代碼書寫規(guī)范總則_第3頁
C語言代碼書寫規(guī)范總則_第4頁
C語言代碼書寫規(guī)范總則_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1/1C語言代碼書寫規(guī)范總則5.C語言書寫規(guī)范5.1符號命名規(guī)則5.1.1符號名包括常量名、標號名、子程序名等。

這些名字應該能反映它所代表的實際東西,具有一定的意義,使其能夠見名知義,有助于對程序功能的理解。

命名采用匈牙利命名法。

規(guī)則如下:

(5.1.1.1)const變量,用大寫字母命名。

在復合詞里用下劃線隔開每個詞。

(5.1.1.2)復合詞中每個單詞的第一個字母大寫。

除了規(guī)則5.1.1.1以外,避免使用下劃線。

(5.1.1.4)函數(shù)名是復合詞的,第一個詞采用全部小寫,隨后每個單詞采用第一個字母大寫,其它字母小寫方式;如果是單個詞的,采用全部小寫方式。

(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ù)說明次序應當規(guī)范化,使數(shù)據(jù)屬性容易查找,也有利于測試、排錯和維護。

說明的先后次序應固定,應按邏輯功能排序,邏輯功能塊內(nèi)建議采用下列順序:

整型說明、實型說明、字符說明、邏輯量說明。

5.2.2如果設計了一個復雜的數(shù)據(jù)結構,應當通過注釋對其變量的含義、用途進行說明。

5.2.3在函數(shù)的聲明中使用異常聲明。

如:

voidf()throw(toobig,toosmall,divzero);在聲明一個函數(shù)時,將它所拋出的異常列出,便于函數(shù)的使用者了解可能會發(fā)生哪些異常。

5.3程序注釋5.3.1程序注釋是程序員與日后的程序讀者之間通信的重要手段之一,注釋分為文件注釋、函數(shù)注釋和功能注釋。

5.3.2正規(guī)程序的注釋應注意:

注釋行的數(shù)量占到整個源程序的1/3到1/2。

5.3.3文件注釋位于整個源程序的最開始部分,注釋后空兩行開始程序正文。

它包括:

程序標題。

目的、功能說明。

文件作者、最后修改日期等說明。

例:

./********************************************************************(空一行)標題:Demo.c功能:測試VxWorks的各種系統(tǒng)調(diào)用.說明:該程序測試各種VxWorks的系統(tǒng)調(diào)用函數(shù)。

包括任務(taks)的創(chuàng)建、掛起及任務間通過信號燈實現(xiàn)同步,通過消息隊列進行通訊。

程序創(chuàng)建了兩個任務:

一個高優(yōu)先級的任務和一個低優(yōu)先級的任務。

兩個任務間通過一個二進制的信號燈進行同步,通過消息隊列進行通訊。

當前版本:

x.x修改信息:

2000.06.05John,InitialVersion2000.07.05Tom,Bugxxxxfixed**************************************************************/(空2行,開始程序正文)5.3.4函數(shù)注釋通常置于每函數(shù)或過程的開頭部分,它應當給出函數(shù)或過程的整體說明對于理解程序本身具有引導作用。

一般包括如下條目:

模塊標題。

有關本模塊功能和目的的說明。

調(diào)用格式接口說明:

包括輸入、輸出、返回值、異常。

算法。

如果模塊中采用了一些復雜的算法。

例:

file://(注釋開頭應和上一函數(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è)務信道號碼輸出:

char*pszMSGData:

指配完成消息數(shù)據(jù)返回值:0x00正常異常:

exception1異常情況1,exception2異常情況2********************************************************************/(注釋后直接開始程序正文,不空行。

)5.3.5功能性注釋嵌在源程序體中,用于描述其后的語句或程序段做什么工作,也就是解釋下面要做什么,或是執(zhí)行了下面的語句會怎么樣。

而不要解釋下面怎么做,因為解釋怎么做常常與程序本身是重復的。

例:

/*把amount加到total中*/total=amount+total;這樣的注釋僅僅是重復了下面的程序,對于理解它的工作并沒有什么作用。

而下面的注釋,有助于讀者理解。

/*將每月的銷售額amount加到年銷售額total中*/total=amount+total;5.4函數(shù)的長度函數(shù)編寫應盡可能短小精悍,一般不超過兩屏,以便于調(diào)試和理解。

5.5語句結構為保證語句結構的清晰和程序的可讀性,在編寫軟件程序時應注意以下幾個方面的問題:

在一行內(nèi)只寫一條語句,并采用空格、空行和移行保證清楚的視覺效果。

每一個嵌套的函數(shù)塊,使用一個TAB縮進(可以設定為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;}}}應寫為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ù)塊可適當空行,一般為1-2行。

程序編寫首先應考慮清晰性,不要刻意追求技巧性而使得程序難以理解。

每行長度盡量避免超過屏幕寬度,應不超過80個字符。

除非對效率有特殊要求,編寫程序要作到清晰第一,效率第二。

盡可能使用函數(shù)庫。

盡量用公共過程或子程序去代替重復的功能代碼段。

要注意,這個代碼應具有一個獨立的功能,不要只因代碼形式一樣便將其抽出組成一個公共過程或子程序。

使用括號清晰地表達算術表達式和邏輯表達式的運算順序。

如將x=a*b/c*d寫成x=(a*b/c)*d可避免閱讀者誤解為x=(a*b)/(c*d)。

避免不必要的轉移。

避免采用過于復雜的條件測試。

避免過多的循環(huán)嵌套和條件嵌套。

建議不要使用*=,–,/=等運算符。

一個函數(shù)不要超過200行。

一個文件應避免超過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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論