版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、SMISOLCC+代碼編寫規(guī)范Ver1.12001 年 4 月 16 日 1 目的使用編碼編寫規(guī)范的主要原因,是使應用程序的結構和編碼風格標準化,使其他成員共享勞動成果。注重于程序的物理結構和外觀,而不是程序的邏輯結構。它們使其他人的編碼更加容易閱讀、容易理解而且容易。 2命名規(guī)則總則:命名要用英語,單詞簡單,明了,意義明確。每個單詞的第一個字母應該大寫,單詞與單詞之間直接連接,用大寫字母加以區(qū)別,定語應該放在被修飾語的前面.不能放在被修飾語的后面.。函數(shù)名稱和工程名稱杜絕直接使用 A,B,C,1,2,3,漢語拼音或人名等難以理解的單詞,對于變量名稱也要避免 如此命名。命名書寫的基本原則是匈牙
2、利命名法.復雜變量 (復雜變量變量指,類和結構的實例)應該有原則和常用變量的縮寫列表.的縮寫命名的長度應當符合“min-length & max-information”原則。一般來說,長名字能更好地表達含義。單字符的名字也是有用的,常見的如 i,j,k,m,n,x,y,z 等,它們通??捎米骱瘮?shù)內的局部變量 2.1工程命名工程項目的意義名稱根據(jù)項目組決定.并在此工程意義名稱的前面添加大寫的“SS”(ShangHai Smisol )作為此工程項目的工程命名。如:工程項目的意義名稱為 M,工程名稱為 SSM對應的Visual C+的工程文件名為 SSM.dsp 2.2類(CLASS)名所有的類
3、()的名字必須以“CSS“開頭“CSS “后第一個字母應該大寫:)的頭文件和原文件,遵循CSSImage所以對于類(名規(guī)則去掉字母即可.Exle :SSImage.h,SSImage.cpp 2.3函數(shù)名 2.3.1全局函數(shù)全局函數(shù)如:long Rm名必須符合 :限定名詞 + 動詞 +名詞 的原則。GetCenter(double &x, double &y) 的 Rm為限定名詞Get 為動詞 Center 為名詞。限定名詞根據(jù)工程名稱規(guī)定。 2.3.2類成員函數(shù)類成員函數(shù)名必須符合:動詞+名詞的原則。如:在CRImage class 中 void GetWidth(double *Width
4、) 名詞 Get 為動詞 Width為名詞。類的成員函數(shù)只使用“動詞”,被省略掉的名詞就是對象本 身。例如:RmDrawImage();/ 全局函數(shù)/ 類的成員函數(shù)Image-Draw(); 2.4宏全部要用大寫字母。并用下劃線分割單詞。如:#define MAX_IMAGE_LENGTH 1024 2.5文件名 2.5.1頭文件(H),代碼文件(CPP)對于類(CLASS)的頭文件和代碼文件名遵循名規(guī)則.去掉字母即可。Exle :對于 CSSImage class 頭文件和代碼文件分別為 SSImage.h,SSImage.cpp.對于全局函數(shù)的頭文件和代碼文件名詞+其他 + cpp/H。如
5、 SSRm名,應該遵循: SS+ 限定Create.h 和SSRmCreate.cpp.其中 SS 為文件名前綴,Rm為限定詞,Create 表明此代碼文件是產生關于 Rm的文件。 2.5.2資源文件資源文件與工程文件同名,僅僅后綴不同而已。如:對于 SSM.dsp而言,資源文件名稱為 SSM.rc. 2.5.3def 文件def 文件因該與工程文件同名,僅僅后綴不同而已。如:對于SSM.dsp 而言,def 文件名稱為 SSM.def. 2.6變量名變量名應該遵循匈牙利命名法。即:限定詞 + _ + 類型縮寫+意義名詞。 2.6.1全局變量名全局變量的限定詞為字母”g”。所以全局變量必須以小
6、寫字母”g_”開g_nImageNumber :“g“表示全局變量“n“表示此變量為始。如型 , “ImageNumber“表示此變量的意義。 2.6.2局部變量名局部變量不必要加限定詞。即:類型縮寫+意義名詞。如nImageNumber : “n“表示此變量為變量的意義。型 , “ImageNumber“表示此 2.6.3類中的成員變量名類中的成員變量命名的限定詞為字母”m”。所以類中的成員變量命名必須以小寫字母” m_”開始。如m_nImageNumber :“m“表示類中變量 “n“表示此變量為型 , “ImageNumber“表示此變量的意義。 2.6.4靜態(tài)變量靜態(tài)變量加限定詞為”s
7、”,所以對于類中的成員靜態(tài)變量命名必須以小寫字母” ms_”開始。如ms_nImageNumber :“ms“表示類中成員靜態(tài)變量 “n“表示此變量為義。型 , “ImageNumber“表示此變量的意對于局部的靜態(tài)變量命名必須以小寫字母” s_”開始。如 s_nImageNumber :“s“表示靜態(tài)變量 “n“表示此變量為 “ImageNumber“表示此變量的意義。型 , 2.6.5指針在所有的指針的類型縮寫前必須加前綴”p”。如對于類中的成員指針變量必須以小寫字母” m_p”開始。如 示類中成員變量 “pn“表示此變量為此變量的意義。*m_pnImageNumber :“m“表* 型
8、, “ImageNumber“表示 2.6.6常量名常量必須全部用大寫字母,不需要加前綴,當常量由多個單詞組成時,各單詞由“_”加以分割。并且用 const 來定義常量(稱為 const常量)。如:constconst floatMAX_NUMBER = 100;/C+ 語言的 const 常量C+ 語言的 const 常量PI = 3.14159;/需要對外公開的常量放在頭文件中,不需要對外公開的常量放在定義文件的頭部。為便于管理,可以把不同工程的常量集中存放在一個公共的頭文件中。 2.6.7參數(shù)參數(shù)名名和局部變量名相同。即:類型縮寫+意義名詞。如&nImageNumber) : “n“表示
9、此變量為longGetImageNumber(型 , “imageNumber“表示此變量的意義。 2.7其他 2.7.1類型(TYPEDRFED) 命名類型(typedef )如:typedef PWORD或typedef PWORD名不作具體要求。但第一個字母應該用大寫字母。IMGPTR ; / 16 bit image buffoerImgptr; / 16 bit image buffoer 2.7.2枚舉類型的枚舉(enum)名中, 單詞與單詞之間直接連接,用大寫字母加以區(qū)別,并且加大寫的字母”EM”作為前綴。枚舉列表值名必須遵循常量名規(guī)則。全部用大寫字母,當由多個單詞組成時,各單詞
10、由”_”加以分割 如:enum EMClockDirecterCLOCKWISE=1,LOCKWISE=-1; 2.7.3聯(lián)合類型的聯(lián)合(union)名中, 單詞與單詞之間直接連接,用大寫字母加以區(qū)別,并且加大寫的字母”UN”作為前綴。聯(lián)合包含的類型數(shù)據(jù)名必須遵循局部變量union UNKnow名規(guī)則。如:/ Declare union typecharchType; / Declare member types nNumber;fValue;float 2.7.4結構類型的結構(struct)名中, 單詞與單詞之間直接連接,用大寫字母加以區(qū)別,并且加大寫的字母”ST”作為前綴。結構包含的類型
11、數(shù)據(jù)名必須遵循局部變量名規(guī)則。如:struct STnAge; float fWeight;/ Declarestruct type/ Declare member types 3注釋規(guī)則使用代碼注釋的目的:用文字說碼的作用(即為什么要編寫該代碼,而不是如何編寫);明確該代碼的編寫思路和邏輯方法;使人們注意到代碼中的重要轉折點;使代碼的閱讀者不必在他們的頭腦中仿真運行代碼的執(zhí)行過程??招泻涂瞻鬃址彩且环N特殊注釋注釋可以與語句在同一行,也可以在上行,在下面注釋。規(guī)定在所有的注釋中都以/開始,/*和*/之間的代碼僅表示此段代碼暫時且不用。在注釋中所有的標示符都必須用窄字符。 注解的兩種方式:簡單
12、的說明,必須與代碼同一行或上行,用“/“開始。如if(value0)/if value greatern 0. execute 詳細的說明,必須在代碼上方,用“/Description: “標示開始進行說明,用“/Description “標示結束。如:/Description:/if value greater/Descriptionif(value0)n 0. execute 3.1工程的注釋工程的注解說明應該書寫入工程的說明文檔。應該包括:項目的委托、開發(fā)部門;該系統(tǒng)與其他系統(tǒng)的關系。定義列出用到的專門術語的定義和縮寫詞 3.2代碼文件注釋代碼文件主要是指 h 文件和 cpp 文件。每個
13、代碼文件賦予一個注釋標頭。代碼文件注釋標頭內容包括:公司名稱、注意一個 CPP 必須有一個人來完成。請按照下例寫注釋標頭:、作者名稱、時間。/*/File Name: RAngle.h: theerface of CRAngle/ver: V1.0/Copyright: (c) 1998-1999 *公司技?部/Designer : */Creater: : */Begin Date: 2001.10.9/End Date: 2001.11.9/*Modify*/Modfier: /修改人:/Modfy Date:/Modfy Context:/* 3.3類的注釋類的說明注釋應該放在頭文件中
14、(H 文件中.CPP 文件中無)類注釋的模板為:/Description:/This class implement/CSSImage is the base/image pros. Every/class. do not createthe base funciton of image.class of Smiosl Image Group aboutclass when use image please use the new Image/base class . but you can inherit one new class from/CSSImage.This class have
15、 CSSmemory member . so the class/can auto manage memory/Description/Exle:/CSImage imgName;/ImgName.SetImage(nwidth,nHeight,impBuffer,true);/IMGPTR imBuffer = ImgName.GetAddress();/Exleclass CSSImagepublic:friend class CSSImage;CSSImage();/ Construct one empty image/Description:/Construct one image a
16、s same as cIimage,but dontallocate as same/new image buffer.t means the image buffer is/as the buffer of cImage/DescriptionCSSImage(const CSSImage &cImage);virtual CSSImage(); public:/Description :/Get the bits depthof the gray image./ the default value is 8;/Descriptionsize_t GetBits() const;voidSe
17、tBits(size_t uBits);size_t GetHeight()const; / the height of image 3.4函數(shù)注釋函數(shù)的簡單說明應該放在頭文件中,詳細的說明請放在 CPP 文件中。在 H 文件中的注釋的模板為:/Description :/Get the bits depth of the gray image. the default value/is 8;/Descriptionsize_t GetBits() const;或/Get the bits defpthsize_t GetBits() const;在 CPP 文件中函數(shù)的注釋的模板為:/*/F
18、unction Name:/Parameter in/Parameter out/Parameter in,out/Description:/Return Value:a-b-c-/Ex為 1, 表示.為 0, 表示.le: Demo about the function/* 3.5流程注釋按需要進行注釋。特別是在主要的判斷和循環(huán)處加注釋,簡單的流程注釋要在“和“的同一行進行說明。復雜的的流程注釋要在判斷和循環(huán)的上方增加注釋。如:voiImage:SetImage(const CSImage &imgSrc, bool bCopy)/assert this image != imgSrc as
19、sert(this!=& imgSrc);/assert the data mermber of class is #ifdef _DEBUGimgSrc.Assert(); #endifvalidouWidth ouHeight ouBits ouLineSize= imgSrc.ouWidth;= imgSrc.ouHeight;= imgSrc.ouBits;= imgSrc.ouLineSize;if(bCopy)/allocate memory if bCopy =true/*Description : allocate the require size memory and fre
20、e the before memory */MemAllocator(ouLineSize*ouHeight); CopyImage(imgSrc);else/ only poer imgSrc if bCopy = falseoImp= imgSrc.oImp;/ assert the creation validimage data mermber of class is#ifdef _DEBUGAssert(); #endif 3.6變量變量的注釋根據(jù)需要在同一行加以說明。如:nImageNumber /explahe number of image 3.7常量簡單注釋同變量的注釋。如果
21、需要同時要有 16 進制和 10 進制的值constCOLORNUMBER =255/0 xFF.或constCOLORNUMBER =255/0 xFF. 4 代碼的格式化基本要求:在 60 行以程序結構清析,簡單易懂,單個函數(shù)的程序行數(shù)內。不要隨意定義全局變量,盡量使用局部變量。循環(huán)、分支層次不要超過五層。用 IF 語句來強調只執(zhí)行兩組語句中的一組。禁止 ELSE GOTO 和 ELSE RETURN。用 CASE 實現(xiàn)多路分支。函數(shù)只有一個出口。 4.1Public:CLASS 的書寫順序Type Define 類型定義Public:Constructor FunctionDestroy
22、 Function Public:4.Property or Data Member Public:5.6.7.SetParalmeter Method Execute Method GetPalameter MehodProtected:Type Define 類型定義Protected:Data Member Protected:Method Privated:Type Define 類型定義Privated:Data Member Privated:Method如:class CSImagepublic:friend class CSImage;typedef PWORD IMGPTR
23、; / 16 bit image buff CSImage();virtual CSImage();public:oer declspec(property(get=GetWidth)size_t Width;public:void SetWidth(size_t uWidth); long Execute();size_t GetWidth() const; protected:typedef struct tagPROSIMGPTR ImpDest;size_t uDestLineSize; size_t uWidth;size_t uHeight; S;PROprotected:size
24、_t size_tprotected:virtualouWidth;/image width ouHeight;/image heightlongRun(const PROS &cPros);private:void SetDefault(); 4.2變量的初始化所有變量必需初始化.尤其是指針必須初始化為 NULL. pstSrc = NULL/良好的風格pstSrc = 0/不良的風格盡可能在定義變量的同時初始化該變量(就近原則)如果變量的處和其定義處相隔比較遠,變量的初始化很容易被忘記。如果 未被初始化的變量,可能會導致程序錯誤。如了iwidth = 10;iheight = 10;ide
25、pth = 10;/ 定義并初紿化 width/ 定義并初紿化 height/ 定義并初紿化 depth 4.3對齊方式所有的對齊都用 TAB 進行對齊(TAB =4 個空格)如:while()if()for()switch()case 1: / switch() / for() / if() / while() 4.3.1條件編譯宏所有的條件編譯宏都必須靠最左邊。如:voiImage:SetImage(const CSImage &imgSrc,bool bCopy)/assert this image != imgSrc assert(this!=& imgSrc);/assert the
26、 data mermber of class isvalidif(bCopy)#ifdef _DEBUGimgSrc.Assert();#endif括號“”,“對齊方式 4.3.2程序的分界符和應獨占一行并且位于同一列,同時與它們的語句左對齊。 之內的代碼塊在右邊一個 TAB 處左對齊。如:for(;)/良好的風格for(;)/不良的風格 4.3.3循環(huán)對齊方式循環(huán)體必須另起一行, for、while、do 等語句自占一行,執(zhí)行語句不得緊跟其后。建議不論執(zhí)行語句有多少都要加。for(;)/okdosomething();/良好的風格/okdosomething();/不良的風格for(;) 4
27、.3.4if 對齊方式if 語句占一行,執(zhí)行語句不得緊跟其后。不論執(zhí)行語句有多少都要加.并且 if 要和其后的程序體的”“,“和“else“在同一列。如:if()elseif()else 4.4關于 GoTo 的使用盡量避免 GoTo 的使用,雖然使用 GoTo 可以帶來程序結構等許多方面的好處。但它也帶來許多性的。而且這些錯誤都是很難查出來的。在必須使用 GoTo 的情況下,盡量使用 do . while(false)代替。如:do FILE *fp = fopen(f:temptry1.rfi, wb); if (fp = NULL) break;dosomething();if()bre
28、ak;while (false); 4.5空行空行起著分隔程序段落的作用??招械皿w將使程序的布局更加清晰。在每個類/ 空行之后、每個函數(shù)定義結束之后都要加空行 如:void Function1()/ 空行void Function2()/ 空行void Function3()在一個函數(shù)體內,邏揖上密切相關的語句之間不加空行,其它地方應加空行分隔。如:/ 空行while (condition)sement1;/ if空行(condition)sement2;elsesement3;/ 空行sement4; 4.6空格關鍵字之后要留空格。象 const、virtual、inline、case 等關
29、鍵字之后至少要留一個空格,否則無法辨析關鍵字。象 if、for、while 等關鍵字之后應留一個空格再跟左括號(,以突出關鍵字。函數(shù)名之后不要留空格,緊跟左括號(,以與關鍵字區(qū)別。(向后緊跟,)、,、;向前緊跟,緊跟處不留空格。,之后要留空格,如 Function(x, y, z)。如果;不是一行的結束符號,其后要留空格,如 for (initialization; condition; update)。賦值操作符、比較操作符、算術操作符、邏輯操作符、位域操作符,如“=”、“+=” “=”、“=”、“+”、“*”、“%”、“&”、 “|”、“”這類操作符前后不加空格。對于表達式比較長的 for
30、 語句和 if 語句,為了緊湊起見可以適當?shù)厝サ粢恍┛崭?,?for (i=0; i10; i+)和 if (a=b) & (c= 2000)if(year=2000)/if (a=b) & (c=b&c=d)/不良的風格良好的風格switch (Value)/switch(Value)/不良的風格while (Value)/良好的風格不良的風格while(Value)/for (i=0; i10;i+)/良好的風格for(i=0;i10;i+)/ 不良的風格/ 過多的空格for (i = 0;I10;i+)x = a b ?a:b;/良好的風格x=aFunction();/b - Function(); 4.7其他 4.7.1長行拆分代碼行最大長度宜控制在 70 至 80 個字符以內。表達式要在低優(yōu)先級操作符處拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高效節(jié)能環(huán)保設備采購與推廣合同
- 經銷商合同協(xié)議
- 食品安全檢測服務平臺開發(fā)合同
- 2025年中國木紋豪華門行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 跨海電影項目投資聯(lián)合制作合同
- 年產木質家具100萬件生產項目資金申請報告
- 2025年丙烯酸樹脂漆項目可行性研究報告
- 物業(yè)管理保安帽行業(yè)市場發(fā)展及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2025年中國香薰野豬肉行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2025年小提花平紋布項目投資可行性研究分析報告
- 大客戶銷售這樣說這樣做
- 精裝修樣板房房屋使用說明
- 喬遷新居結婚典禮主持詞
- 小學四年級數(shù)學競賽試題(附答案)
- 魯科版高中化學必修2全冊教案
- 《病理學基礎》知識考核試題題庫與答案
- 人口分布 高一地理下學期人教版 必修第二冊
- 部編版六年級下冊語文第3單元習作例文+習作PPT
- 四年級上冊英語試題-Module 9 Unit 1 What happened to your head--外研社(一起)(含答案)
- 子宮內膜異位癥診療指南
- 《高級計量經濟學》-上課講義課件
評論
0/150
提交評論