SN_IP04編碼規(guī)范與范例_C++規(guī)范V1.2_第1頁(yè)
SN_IP04編碼規(guī)范與范例_C++規(guī)范V1.2_第2頁(yè)
SN_IP04編碼規(guī)范與范例_C++規(guī)范V1.2_第3頁(yè)
SN_IP04編碼規(guī)范與范例_C++規(guī)范V1.2_第4頁(yè)
SN_IP04編碼規(guī)范與范例_C++規(guī)范V1.2_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C+編碼規(guī)范 Coding ConventionsPC客戶(hù)端項(xiàng)目組C+ 編程標(biāo)準(zhǔn)命名和風(fēng)格我們采用微軟.Net Framework命名規(guī)范,和MicroSoft保持一致,便于融合使用微軟的最佳實(shí)踐,也便于閱讀。實(shí)際上這涉及到兩種命名規(guī)則:Pascal命名規(guī)則和Camel命名規(guī)則,他們出現(xiàn)的場(chǎng)景不同。這兩種規(guī)范都要求變量命名時(shí)少用縮略詞和無(wú)意義的字母,變量名稱(chēng)能夠概括代表的功能,可以由多個(gè)詞連續(xù)排列構(gòu)成,每個(gè)單詞之間稱(chēng)為邏輯斷點(diǎn)。l Pascal規(guī)范:變量名稱(chēng)能夠概括功能,由單詞不間斷組合在一起,每個(gè)單詞的首字母都大寫(xiě),如:MyClassl Camel規(guī)范:變量名稱(chēng)能夠概括功能,由單詞不間斷組合

2、在一起,變量首字母小寫(xiě),其它的每個(gè)單詞都大寫(xiě),如:myClassl 匈牙利命名規(guī)則:十分必要的情況下,在變量前加上數(shù)據(jù)類(lèi)型前綴,盡量不要使用匈牙利命名規(guī)則,因?yàn)榛逎y懂。我們采用Resharper作為規(guī)范檢查工具目錄PC客戶(hù)端項(xiàng)目組1C+ 編程標(biāo)準(zhǔn)命名和風(fēng)格11命名規(guī)則41.1總則41.2類(lèi)/結(jié)構(gòu)51.3函數(shù)51.4變量61.5常量71.6枚舉、聯(lián)合、typedef71.7宏、枚舉值82文件結(jié)構(gòu)82.1文件頭注釋82.2頭文件92.3實(shí)現(xiàn)文件103代碼風(fēng)格與版式113.1語(yǔ)句與代碼行123.2縮進(jìn)和對(duì)齊123.3最大長(zhǎng)度133.4長(zhǎng)行拆分133.5空格的使用143.6修飾符的位置163.7注釋

3、164注釋分類(lèi)說(shuō)明174.1源文件頭部注釋174.2函數(shù)頭部注釋174.3全局變量的注釋18附:QT控件命名規(guī)范20特別說(shuō)明:211 命名規(guī)則1.1 總則在軟件開(kāi)發(fā)這一高度抽象而且十分復(fù)雜的活動(dòng)中,命名規(guī)則的重要性更顯得尤為突出。一套定義良好并且完整的、在整個(gè)項(xiàng)目中統(tǒng)一使用的命名規(guī)范將大大提升源代碼的可讀性和軟件的可維護(hù)性。在引入細(xì)節(jié)之前,先說(shuō)明一下命名規(guī)范的整體原則:同一性在編寫(xiě)一個(gè)子模塊或派生類(lèi)的時(shí)候,要遵循其基類(lèi)或整體模塊的命名風(fēng)格,保持命名風(fēng)格在整個(gè)模塊中的同一性。標(biāo)識(shí)符組成標(biāo)識(shí)符采用英文單詞或其組合,應(yīng)當(dāng)直觀且可以拼讀,可望文知意,用詞應(yīng)當(dāng)準(zhǔn)確。最小化長(zhǎng)度 && 最大

4、化信息量原則在保持一個(gè)標(biāo)識(shí)符意思明確的同時(shí),應(yīng)當(dāng)盡量縮短其長(zhǎng)度。避免過(guò)于相似不要出現(xiàn)僅靠大小寫(xiě)區(qū)分的相似的標(biāo)識(shí)符,例如“i”與“I”,“function”與“Function”等等。避免在不同級(jí)別的作用域中重名程序中不要出現(xiàn)名字完全相同的局部變量和全局變量,盡管兩者的作用域不同而不會(huì)發(fā)生語(yǔ)法錯(cuò)誤,但容易使人誤解。正確命名具有互斥意義的標(biāo)識(shí)符用正確的反義詞組命名具有互斥意義的標(biāo)識(shí)符,如:"nMinValue"和"nMaxValue","GetName()" 和 "SetName()" .避免名字中出現(xiàn)數(shù)字編號(hào)盡量避免

5、名字中出現(xiàn)數(shù)字編號(hào),如Value1,Value2等,除非邏輯上的確需要編號(hào)。這是為了防止程序員偷懶,不肯為命名動(dòng)腦筋而導(dǎo)致產(chǎn)生無(wú)意義的名字(因?yàn)橛脭?shù)字編號(hào)最省事)。1.2 類(lèi)/結(jié)構(gòu)除了異常類(lèi)等個(gè)別情況(不希望用戶(hù)把該類(lèi)看作一個(gè)普通的、正常的類(lèi)之情況)外,C+類(lèi)/結(jié)構(gòu)的命名應(yīng)該遵循以下準(zhǔn)則:C+類(lèi)/結(jié)構(gòu)的命名類(lèi)的名稱(chēng)都要以大寫(xiě)字母“C”開(kāi)頭,后跟一個(gè)或多個(gè)單詞。按實(shí)際情況,每個(gè)單詞的首字母大寫(xiě),保持文件名與類(lèi)名一致。推薦的組成形式類(lèi)的命名推薦用"名詞"或"形容詞名詞"的形式,例如:"CAnalyzer", "CFastVect

6、or" .不同于C+類(lèi)的概念,傳統(tǒng)的C結(jié)構(gòu)體只是一種將一組數(shù)據(jù)捆綁在一起的方式。傳統(tǒng)C結(jié)構(gòu)體的命名規(guī)則為:傳統(tǒng)C結(jié)構(gòu)體的命名傳統(tǒng)C結(jié)構(gòu)體的名稱(chēng)全部由大寫(xiě)字母組成,單詞間使用下劃線(xiàn)界定,例如:"SERVICE_STATUS_S", "DRIVER_INFO" .1.3 函數(shù)函數(shù)的命名函數(shù)的名稱(chēng)由一個(gè)或多個(gè)單詞組成。為便于界定,每個(gè)單詞的首字母要大寫(xiě)。推薦的組成形式函數(shù)名應(yīng)當(dāng)使用"動(dòng)詞"或者"動(dòng)詞名詞"(動(dòng)賓詞組)的形式。例如:"GetName()", "SetValue()&q

7、uot;, "Erase()", "Reserve()" .保護(hù)成員函數(shù)保護(hù)成員函數(shù)的開(kāi)頭應(yīng)當(dāng)加上一個(gè)下劃線(xiàn)“_”以示區(qū)別,例如:"_SetState()" .私有成員函數(shù)類(lèi)似地,私有成員函數(shù)的開(kāi)頭建議加上兩個(gè)下劃線(xiàn)“_”,例如:"_DestroyImp()" .不強(qiáng)制。虛函數(shù)虛函數(shù)習(xí)慣以“Do”開(kāi)頭,如:"DoRefresh()", "_DoEncryption()" .回調(diào)和事件處理函數(shù)回調(diào)和事件處理函數(shù)習(xí)慣以單詞“On”開(kāi)頭。例如:"OnTimer()&quo

8、t;, "OnExit()" .1.4 變量變量應(yīng)該是程序中使用最多的標(biāo)識(shí)符了,變量的命名規(guī)范可能是一套C+命名準(zhǔn)則中最重要的部分:變量的命名變量名由作用域前綴類(lèi)型前綴一個(gè)或多個(gè)單詞組成。為便于界定,每個(gè)單詞的首字母要大寫(xiě)。對(duì)于某些用途簡(jiǎn)單明了的局部變量,也可以使用簡(jiǎn)化的方式,如:i, j, k, x, y, z .作用域前綴作用域前綴標(biāo)明一個(gè)變量的可見(jiàn)范圍。作用域可以有如下幾種:前綴說(shuō)明無(wú)局部變量m_類(lèi)的成員變量(member)sm_或ms_類(lèi)的靜態(tài)成員變量(static member)s_靜態(tài)變量(static)g_外部全局變量(global)sg_靜態(tài)全局變量(sta

9、tic global)gg_進(jìn)程間共享的共享數(shù)據(jù)段全局變量(global global)除非不得已,否則應(yīng)該盡可能少使用全局變量。類(lèi)型前綴類(lèi)型前綴標(biāo)明一個(gè)變量的類(lèi)型,可以有如下幾種:前綴說(shuō)明n整型和位域變量(number)e_枚舉型變量(enumeration)強(qiáng)制要求c字符型變量(char)b布爾型變量(bool)f浮點(diǎn)型變量(float)p指針型變量和迭代子(pointer)強(qiáng)制要求pfn特別針對(duì)指向函數(shù)的指針變量和函數(shù)對(duì)象指針(pointer of function),強(qiáng)制要求arr數(shù)組(Array)str字符串,強(qiáng)制要求i類(lèi)的實(shí)例(instance)對(duì)于經(jīng)常用到的類(lèi),也可以定義一些專(zhuān)門(mén)

10、的前綴,如:std:string和std:wstring類(lèi)的前綴可以定義為"st",std:vector類(lèi)的前綴可以定義為"v"等等。類(lèi)型前綴可以組合使用,例如"gc"表示字符數(shù)組,"ppn"表示指向整型的指針的指針等等。推薦的組成形式變量的名字應(yīng)當(dāng)使用"名詞"或者"形容詞名詞"。例如:"nCode", "m_nState","nMaxWidth" .1.5 常量C+中引入了對(duì)常量的支持,常量的命名規(guī)則如下:常量的命

11、名常量名由類(lèi)型前綴全大寫(xiě)字母組成,單詞間通過(guò)下劃線(xiàn)來(lái)界定,如:cDELIMITER, nMAX_BUFFER .類(lèi)型前綴的定義與變量命名規(guī)則中的相同。Define 要大寫(xiě),Const命名規(guī)則與普通變量一致。1.6 枚舉、聯(lián)合、typedef枚舉、聯(lián)合及typedef語(yǔ)句都是定義新類(lèi)型的簡(jiǎn)單手段,它們的命名規(guī)則為:枚舉、聯(lián)合、typedef的命名枚舉、聯(lián)合、typedef語(yǔ)句生成的類(lèi)型名由全大寫(xiě)字母組成,單詞間通過(guò)下劃線(xiàn)來(lái)界定,如:FAR_PROC, ERROR_TYPE .1.7 宏、枚舉值宏、枚舉值的命名宏和枚舉值由全大寫(xiě)字母組成,單詞間通過(guò)下劃線(xiàn)來(lái)界定,如:ERROR_UNKNOWN, O

12、P_STOP .2 文件結(jié)構(gòu)2.1 文件頭注釋所有C+的源文件均必須包含一個(gè)規(guī)范的文件頭,文件頭包含了該文件的名稱(chēng)、功能概述、作者、版權(quán)和版本歷史信息等內(nèi)容。標(biāo)準(zhǔn)文件頭的格式為:/*! file*<PRE>文件名       : <文件名>文件描述 : <描述該文件實(shí)現(xiàn)的主要功能> 作者         : <作者部門(mén)和姓名>版本      

13、;   : <當(dāng)前版本號(hào)>創(chuàng)建時(shí)間-備注         : <其它說(shuō)明> 建議使用備注,不強(qiáng)制要求-</PRE>*/ 每行不要超過(guò)80個(gè)字符的寬度。強(qiáng)制要求2.2 頭文件頭文件通常由以下幾部分組成:文件頭注釋所有C+的源文件均必須包含一個(gè)規(guī)范的文件頭,文件頭包含了該文件的名稱(chēng)、功能概述、作者、版權(quán)和版本歷史信息等內(nèi)容。預(yù)處理塊為了防止頭文件被重復(fù)引用,應(yīng)當(dāng)用ifndef/define/endif結(jié)構(gòu)產(chǎn)生預(yù)處理塊。函數(shù)和類(lèi)/結(jié)構(gòu)的聲明等聲明模塊的接口

14、需要包含的內(nèi)聯(lián)函數(shù)定義文件(如果有的話(huà))如果類(lèi)中的內(nèi)聯(lián)函數(shù)較多,或者一個(gè)頭文件中包含多個(gè)類(lèi)的定義(不推薦),可以將所有內(nèi)聯(lián)函數(shù)定義放入一個(gè)單獨(dú)的內(nèi)聯(lián)函數(shù)定義文件中,并在類(lèi)聲明之后用“#include”指令把它包含進(jìn)來(lái)。頭文件的編碼規(guī)則:-用 #include <filename.h> 格式來(lái)引用標(biāo)準(zhǔn)庫(kù)和系統(tǒng)庫(kù)的頭文件(編譯器將從標(biāo)準(zhǔn)庫(kù)目錄開(kāi)始搜索)。用 #include "filename.h" 格式來(lái)引用當(dāng)前工程中的頭文件(編譯器將從該文件所在目錄開(kāi)始搜索)。如果在一個(gè)頭件中定義了多個(gè)類(lèi)或者多組接口(不推薦),為了便于瀏覽,應(yīng)該在每個(gè)類(lèi)/每組接口間使用分割帶把

15、它們相互分開(kāi)。一個(gè)頭文件內(nèi)只能定義一個(gè)類(lèi)或一組接口。 如上所述,在內(nèi)聯(lián)函數(shù)較多的情況下,為了避免頭文件過(guò)長(zhǎng)、版面混亂,可以將所有的內(nèi)聯(lián)函數(shù)定義移到一個(gè)單獨(dú)的文件中去,然后再用#include指令將它包含到類(lèi)聲明的后面。這樣的文件稱(chēng)為一個(gè)內(nèi)聯(lián)函數(shù)定義文件。按照慣例,應(yīng)該將這個(gè)文件命名為“filename.inl”,其中“filename”與相應(yīng)的頭文件和實(shí)現(xiàn)文件相同。內(nèi)聯(lián)函數(shù)定義文件由以下幾部分組成:文件頭注釋每?jī)?nèi)聯(lián)函數(shù)定義文件都應(yīng)該由一個(gè)規(guī)范的文件頭注釋作為開(kāi)始內(nèi)聯(lián)函數(shù)定義內(nèi)聯(lián)函數(shù)的實(shí)現(xiàn)體內(nèi)聯(lián)函數(shù)定義文件的編碼規(guī)則:分割多組接口(如果有的話(huà))如果在一個(gè)內(nèi)聯(lián)函數(shù)定義文件中定義了多個(gè)類(lèi)或

16、者多組接口的內(nèi)聯(lián)函數(shù)(不推薦),必須在每個(gè)類(lèi)/每組接口間使用分割帶把它們相互分開(kāi)。文件組成中為什么沒(méi)有預(yù)處理塊?與頭文件不同,內(nèi)聯(lián)函數(shù)定義文件通常不需要定義預(yù)處理塊,這是因?yàn)樗麄兛偸潜话谂c其相應(yīng)的頭文件預(yù)處理塊內(nèi)。 2.3 實(shí)現(xiàn)文件實(shí)現(xiàn)文件包含所有數(shù)據(jù)和代碼的實(shí)現(xiàn)體。實(shí)現(xiàn)文件的格式為:文件頭注釋每個(gè)實(shí)現(xiàn)文件都應(yīng)該由一個(gè)規(guī)范的文件頭注釋作為開(kāi)始引用聲明了此文件實(shí)現(xiàn)的類(lèi)、函數(shù)及數(shù)據(jù)的頭文件將僅與實(shí)現(xiàn)相關(guān)的接口包含在實(shí)現(xiàn)文件里(而不是頭文件中)是一個(gè)非常好的編程習(xí)慣。這樣可以有效地屏蔽不應(yīng)該暴露的實(shí)現(xiàn)細(xì)節(jié),將實(shí)現(xiàn)改變對(duì)其它模塊的影響降低到最少 。數(shù)據(jù)和函數(shù)的定義實(shí)現(xiàn)文件的編碼規(guī)則:在本

17、地(靜態(tài))定義和外部定義間,以及不同接口或不同類(lèi)的實(shí)現(xiàn)之間,應(yīng)使用分割帶相互分開(kāi)。 3 代碼風(fēng)格與版式代碼風(fēng)格的重要性怎么強(qiáng)調(diào)都不過(guò)分。一段稍長(zhǎng)一點(diǎn)的無(wú)格式代碼基本上就是不可讀的。 先來(lái)看一下這方面的整體原則: 建議使用空行分隔程序段落。空行得體(不過(guò)多也不過(guò)少)將使程序的布局更加清晰。空行不會(huì)浪費(fèi)內(nèi)存,雖然打印含有空行的程序是會(huì)多消耗一些紙張,但是值得。所以不要舍不得用空行。· 在每個(gè)類(lèi)聲明之后、每個(gè)函數(shù)定義結(jié)束之后都要加2行空行。· 在一個(gè)函數(shù)體內(nèi),邏揖上密切相關(guān)的語(yǔ)句之間不加空行,其它地方應(yīng)加空行分隔。 3.1 語(yǔ)句與代碼行·

18、一行代碼只做一件事情,如只定義一個(gè)變量,或只寫(xiě)一條語(yǔ)句。這樣的代碼容易閱讀,并且方便于寫(xiě)注釋。· "if"、"for"、"while"、"do"、"try"、"catch" 等語(yǔ)句自占一行,執(zhí)行語(yǔ)句不得緊跟其后。不論執(zhí)行語(yǔ)句有多少都要加 " " 。這樣可以防止書(shū)寫(xiě)和修改代碼時(shí)出現(xiàn)失誤。3.2 縮進(jìn)和對(duì)齊· 程序的分界符 "" 和 "" 應(yīng)獨(dú)占一行并且位于同一列,同時(shí)與引用它們的語(yǔ)句左對(duì)齊。

19、3; " " 之內(nèi)的代碼塊在 "" 右邊一個(gè)四個(gè)空格處左對(duì)齊。如果出現(xiàn)嵌套的 " ",則使用縮進(jìn)對(duì)齊。例如: void Function(int x)  CSessionLock iLock(mxLock);    for (初始化; 終止條件; 更新)            / .        try &

20、#160;          / .        catch (const exception& err)            / .        catch (.) 3.3 最大長(zhǎng)度代碼行最大長(zhǎng)度宜控制在70至80個(gè)字符以?xún)?nèi)。代碼行不要過(guò)長(zhǎng),否則眼睛看不過(guò)來(lái),也不便于打印(

21、2009年更新:隨著GUI開(kāi)發(fā)環(huán)境和高分寬屏的普及,此規(guī)則可以視情況適當(dāng)放寬)。3.4 長(zhǎng)行拆分長(zhǎng)表達(dá)式要在低優(yōu)先級(jí)操作符處拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語(yǔ)句可讀。例如:if (very_longer_variable1 >= very_longer_variable2)    && (very_longer_variable3 <= very_longer_variable4)    && (very_longer_v

22、ariable5 <= very_longer_variable6)    DoSomething();3.5    空格的使用1.        關(guān)鍵字之后要留空格。象 "const"、"virtual"、"inline"、"case" 等關(guān)鍵字之后至少要留一個(gè)空格,否則無(wú)法辨析關(guān)鍵字。象 "if"、"for"、"while"、&

23、quot;catch" 等關(guān)鍵字之后應(yīng)留一個(gè)空格再跟左括號(hào) "(",以突出關(guān)鍵字。2.        函數(shù)名之后不要留空格,緊跟左括號(hào) "(",以與關(guān)鍵字區(qū)別。3.        "(" 向后緊跟。而 ")"、","、"" 向前緊跟,緊跟處不留空格。4.      &#

24、160; "," 之后要留空格,如 Function(x, y, z)。如果 "" 不是一行的結(jié)束符號(hào),其后要留空格,如 for (initialization; condition; update)。5.        賦值操作符、比較操作符、算術(shù)操作符、邏輯操作符、位域操作符,如"="、"+=" ">="、"<="、"+"、"*"、"%&qu

25、ot;、"&&"、"|"、"<<", "" 等二元操作符的前后應(yīng)當(dāng)加空格。6.        一元操作符如 "!"、""、"+"、"-"、"&"(地址運(yùn)算符)等前后不加空格。7.        象""、".&quo

26、t;、"->"這類(lèi)操作符前后不加空格。8.        對(duì)于表達(dá)式比較長(zhǎng)的 for、do、while、switch 語(yǔ)句和 if 語(yǔ)句,為了緊湊起見(jiàn)可以適當(dāng)?shù)厝サ粢恍┛崭?,?for (i=0; i<10; i+) 和 if (a<=b) && (c<=d) 等。例如:void Func1(int x, int y, int z);    / 良好的風(fēng)格void Func1 (int x,int y,in

27、t z);     / 不良的風(fēng)格/ =if (year >= 2000)         / 不良的風(fēng)格if(year>=2000)            / 不良的風(fēng)格if (a>=b) && (c<=d)     / 良好的

28、風(fēng)格if(a>=b&&c<=d)            / 不良的風(fēng)格/ =for (i=0; i<10; i+)      / 良好的風(fēng)格for(i=0;i<10;i+)         / 不良的風(fēng)格for (i = 0; I < 10; i +) /

29、0;過(guò)多的空格/ =x = a < b ? a : b;        / 良好的風(fēng)格x=a<b?a:b;                / 不好的風(fēng)格/ =int* x = &y;              /

30、0;良好的風(fēng)格int * x = & y;            / 不良的風(fēng)格/ =array5 = 0;             / 不要寫(xiě)成 array 5 = 0;a.Function();            

31、 / 不要寫(xiě)成 a . Function();b->Function();            / 不要寫(xiě)成 b -> Function(); 3.6 修飾符的位置為便于理解,應(yīng)當(dāng)將修飾符 "*" 和 "&" 緊靠數(shù)據(jù)類(lèi)型。 例如:char* name;int* x;int  y;    / 為避免y被誤解為指針,這里必須分行寫(xiě)。int* Fun

32、ction(void* p);  3.7 注釋· 注釋的位置應(yīng)與被描述的代碼相鄰,可以放在代碼的上方或右方,不可放在下方。· 邊寫(xiě)代碼邊注釋?zhuān)薷拇a同時(shí)修改相應(yīng)的注釋?zhuān)员WC注釋與代碼的一致性。不再有用的注釋要?jiǎng)h除。· 注釋?xiě)?yīng)當(dāng)準(zhǔn)確、易懂,防止注釋有二義性。錯(cuò)誤的注釋不但無(wú)益反而有害。· 當(dāng)代碼比較長(zhǎng),特別是有多重嵌套時(shí),應(yīng)當(dāng)在一些段落的結(jié)束處加注釋?zhuān)阌陂喿x。4 注釋分類(lèi)說(shuō)明4.1 源文件頭部注釋Ø 列出:版權(quán)、作者、編寫(xiě)日期和描述。Ø 示例:/*Copyright:buptAuthor:Date:2

33、010-08-25Description:描述主要實(shí)現(xiàn)的功能*/每行不要超過(guò)80個(gè)字符的寬度。4.2 函數(shù)頭部注釋Ø 列出:函數(shù)的目的/功能、輸入?yún)?shù)、輸出參數(shù)、返回值、等。Ø 示例:下面這段函數(shù)的注釋比較標(biāo)準(zhǔn),當(dāng)然,并不局限于此格式,但上述信息建議要包含在內(nèi)。/*Function:       / 函數(shù)名稱(chēng)Description:    / 函數(shù)功能、性能等的描述Input:        &#

34、160; / 輸入?yún)?shù)說(shuō)明,包括每個(gè)參數(shù)的作                  / 用、取值說(shuō)明及參數(shù)間關(guān)系。Output:         / 對(duì)輸出參數(shù)的說(shuō)明。Return:         / 函數(shù)返回值的說(shuō)明Others:   &#

35、160;     / 其它說(shuō)明*/如果其命名不是充分自注釋的,必須加以注釋。對(duì)數(shù)據(jù)結(jié)構(gòu)的注釋?xiě)?yīng)放在其上方相鄰位置,不可放在下面;對(duì)結(jié)構(gòu)中的每個(gè)域的注釋放在此域的右方。Ø 示例:可按如下形式說(shuō)明枚舉/數(shù)據(jù)/聯(lián)合結(jié)構(gòu)。/* sccp interface with sccp user primitive message name */enum SCCP_USER_PRIMITIVE    N_UNITDATA_IND, /* sccp notify sccp user unit data come */ 

36、60;  N_NOTICE_IND,   /* sccp notify user the No.7 network can not */                    /* transmission this message */    N_UNITDATA_REQ, /* sccp user's unit data transmi

37、ssion request*/;4.3 全局變量的注釋Ø 包括對(duì)其功能、取值范圍、哪些函數(shù)或過(guò)程存取它以及存取時(shí)注意事項(xiàng)等的說(shuō)明。示例:/* The ErrorCode when SCCP translate */* Global Title failure, as follows */      / 變量作用、含義注釋總是加在程序的需要一個(gè)概括性說(shuō)明或不易理解或易理解錯(cuò)的地方。注釋語(yǔ)言應(yīng)該簡(jiǎn)練、易懂而又含義準(zhǔn)確,避免二義性;所采用的語(yǔ)種首選是中文,如有輸入困難、編譯環(huán)境限制或特殊需求也可采用英文。注釋?xiě)?yīng)與其描述的代碼相近,

38、對(duì)代碼的注釋統(tǒng)一放在其上方,避免在一行代碼或表達(dá)式中間使用注釋。上方注釋與其上面的代碼用空行隔開(kāi)(較緊湊的代碼除外)。注意:注釋?xiě)?yīng)與所描述內(nèi)容進(jìn)行同樣的縮進(jìn)。附:QT控件命名規(guī)范控件名稱(chēng)命名前綴示例命名QPushButtonbtnbtnOKQToolButtontoolBtntoolBtnSelectQRadioButtonradioBtnradioBtnQCheckBoxcheckBoxcheckBoxManQListViewlistViewlistViewFriendQTreeViewtreeViewtreeVeiwFriendQTableViewtableViewtableViewFri

39、endQColumnViewcolumnVewcolumnViewFriendQListWidgetlistWidgetlistWidgetFriendQTreeWidgettreeWidgettreeWidgetFriendQTableWidgettableWidgettableWidgetFriendQGroupBoxgroupBoxgroupBoxFriendInfoQScrollAreascrollAreascrollAreaFriendQToolBoxtoolboxtoolBoxFriendQTabWidgettabWidgettabWidgetFriendQStackWidgetstackWidgetstackWidgetFriendQFrameframeframeBackgroundQWidgetwidgetwidgetFriendQComboBoxcomboBoxcomboBoxLoginUserQFontComboBoxfontComboBoxfontComboBoxSelectQLineEditedtedtSignatureQTextEdittextEdttextEdtFriendInfoQPlainTextEditplainTextEdtplain

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論