您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 某知名软件公司内部 C++开发标准
上海SMISOLC\C++代码编写规范Version1.12001年4月16日C\C++代码编写规范Ver1.11§1目的使用统一编码编写规范的主要原因,是使应用程序的结构和编码风格标准化,使其他成员共享劳动成果。本规范注重于程序的物理结构和外观,而不是程序的逻辑结构。它们使其他人的编码更加容易阅读、容易理解而且容易维护。§2命名规则总则:命名要用英语,单词简单,明了,意义明确。每个单词的第一个字母应该大写,单词与单词之间直接连接,用大写字母加以区别,定语应该放在被修饰语的前面.不能放在被修饰语的后面.。函数名称和工程名称杜绝直接使用A,B,C,1,2,3,汉语拼音或人名等难以理解的单词,对于变量名称也要避免如此命名。命名书写的基本原则是匈牙利命名法.复杂变量(复杂变量变量指,类和结构的实例)应该有统一的缩写原则和常用变量的缩写列表.命名的长度应当符合“min-length&&max-information”原则。一般来说,长名字能更好地表达含义。单字符的名字也是有用的,常见的如i,j,k,m,n,x,y,z等,它们通常可用作函数内的局部变量§2.1工程命名工程项目的意义名称根据项目组讨论决定.并在此工程意义名称的前面添加大写的“SS”(ShangHaiSmisol)作为此工程项目的工程命名。如:工程项目的意义名称为Model,工程名称为SSModel对应的VisualC++的工程文件名为SSModel.dsp§2.2类(CLASS)的命名所有的类(CLASS)的名字必须以“CSS“开头.“CSS“后第一个字母应该大写.Example:CSSImage.所以对于类(CLASS)的头文件和原文件,遵循VC的命名规则.去掉字母C即可.Example:SSImage.h,SSImage.cppC\C++代码编写规范Ver1.12§2.3函数的命名§2.3.1全局函数全局函数的命名必须符合:限定名词+动词[+名词]的原则。如:longRmodelGetCenter(double&x,double&y)的Rmodel为限定名词Get为动词Center为名词。限定名词根据工程名称统一规定。§2.3.2类成员函数类成员函数的命名必须符合:动词[+名词]的原则。如:在CRImageclass中voidGetWidth(double*Width)名词Get为动词Width为名词。类的成员函数只使用“动词”,被省略掉的名词就是对象本身。例如:RmodelDrawImage();//全局函数Image-Draw();//类的成员函数§2.4宏全部要用大写字母。并用下划线分割单词。如:#defineMAX_IMAGE_LENGTH1024§2.5文件的命名§2.5.1头文件(H),代码文件(CPP)对于类(CLASS)的头文件和代码文件的命名遵循VC的命名规则.去掉字母C即可。Example:对于CSSImageclass头文件和代码文件分别为SSImage.h,SSImage.cpp.对于全局函数的头文件和代码文件的命名,应该遵循:SS+限定名词+[其他]+cpp/H。如SSRmodelCreate.h和SSRmodelCreate.cpp.其中SS为文件名前缀,Rmodel为限定词,Create表明此代码文件是产生关于Rmodel的文件。§2.5.2资源文件资源文件与工程文件同名,仅仅后缀不同而已。如:对于SSModel.dsp而言,资源文件名称为SSModel.rc.§2.5.3def文件def文件因该与工程文件同名,仅仅后缀不同而已。如:对于SSModel.dsp而言,def文件名称为SSModel.def.C\C++代码编写规范Ver1.13§2.6变量的命名变量的命名应该遵循匈牙利命名法。即:[限定词+‘_’+]类型缩写+意义名词。§2.6.1全局变量的命名全局变量的限定词为字母”g”。所以全局变量必须以小写字母”g_”开始。如intg_nImageNumber:“g“表示全局变量“n“表示此变量为int型,“ImageNumber“表示此变量的意义。§2.6.2局部变量的命名局部变量不必要加限定词。即:类型缩写+意义名词。如intnImageNumber:“n“表示此变量为int型,“ImageNumber“表示此变量的意义。§2.6.3类中的成员变量的命名类中的成员变量命名的限定词为字母”m”。所以类中的成员变量命名必须以小写字母”m_”开始。如intm_nImageNumber:“m“表示类中变量“n“表示此变量为int型,“ImageNumber“表示此变量的意义。§2.6.4静态变量静态变量加限定词为”s”,所以对于类中的成员静态变量命名必须以小写字母”ms_”开始。如intms_nImageNumber:“ms“表示类中成员静态变量“n“表示此变量为int型,“ImageNumber“表示此变量的意义。对于局部的静态变量命名必须以小写字母”s_”开始。如ints_nImageNumber:“s“表示静态变量“n“表示此变量为int型,“ImageNumber“表示此变量的意义。§2.6.5指针在所有的指针的类型缩写前必须加前缀”p”。如对于类中的成员指针变量必须以小写字母”m_p”开始。如int*m_pnImageNumber:“m“表示类中成员变量“pn“表示此变量为int*型,“ImageNumber“表示此变量的意义。C\C++代码编写规范Ver1.14§2.6.6常量的命名常量必须全部用大写字母,不需要加前缀,当常量由多个单词组成时,各单词由“_”加以分割。并且用const来定义常量(称为const常量)。如:constintMAX_NUMBER=100;//C++语言的const常量constfloatPI=3.14159;//C++语言的const常量需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。为便于管理,可以把不同工程的常量集中存放在一个公共的头文件中。§2.6.7参数的命名参数的命名和局部变量的命名相同。。即:类型缩写+意义名词。如longGetImageNumber(int&nImageNumber):“n“表示此变量为int型,“imageNumber“表示此变量的意义。§2.7其他§2.7.1类型(TYPEDRFED)命名类型(typedef)的命名不作具体要求。但第一个字母应该用大写字母。如:typedefPWORDIMGPTR;//16bitimagebufferpointer或typedefPWORDImgptr;//16bitimagebufferpointer§2.7.2枚举(enum)枚举类型的的命名中,单词与单词之间直接连接,用大写字母加以区别,并且加大写的字母”EM”作为前缀。枚举列表值的命名必须遵循常量的命名规则。全部用大写字母,当由多个单词组成时,各单词由”_”加以分割如:enumEMClockDirecter{CLOCKWISE=1,ANTICLOCKWISE=-1};§2.7.3联合(union)联合类型的的命名中,单词与单词之间直接连接,用大写字母加以区别,并且加大写的字母”UN”作为前缀。联合包含的类型数据的命名必须遵循局部变量的命名规则。如:unionUNKnow//DeclareuniontypeC\C++代码编写规范Ver1.15{charchType;//DeclaremembertypesintnNumber;floatfValue;}§2.7.4结构(struct)结构类型的的命名中,单词与单词之间直接连接,用大写字母加以区别,并且加大写的字母”ST”作为前缀。结构包含的类型数据的命名必须遵循局部变量的命名规则。如:structSTPerson//DeclarePERSONstructtype{intnAge;//DeclaremembertypesfloatfWeight;};§3注释规则使用代码注释的目的:用文字说明代码的作用(即为什么要编写该代码,而不是如何编写);明确指出该代码的编写思路和逻辑方法;使人们注意到代码中的重要转折点;使代码的阅读者不必在他们的头脑中仿真运行代码的执行过程。空行和空白字符也是一种特殊注释注释可以与语句在同一行,也可以在上行,禁止在下面注释。规定在所有的注释中都以‘//’开始,‘/*‘和‘*/’之间的代码仅表示此段代码暂时且不用。在注释中所有的标示符都必须用窄字符。注解的两种方式:简单的说明,必须与代码同一行或上行,用“//“开始。如if(value0)//ifvaluegreaterthan0.execute…详细的说明,必须在代码上方,用“//@Description:“标示开始进行说明,用“//@~Description“标示结束。如://@Description://ifvaluegreaterthan0.execute…//@~Descriptionif(value0){C\C++代码编写规范Ver1.16……}§3.1工程的注释工程的注解说明应该书写入工程的说明文档。应该包括:●项目的委托单位、开发部门;●该软件系统与其他系统的关系。●定义列出用到的专门术语的定义和缩写词§3.2代码文件注释代码文件主要是指h文件和cpp文件。每个代码文件赋予一个注释标头。代码文件注释标头内容包括:公司名称、版权、作者名称、时间。注意一个CPP必须有一个人来完成。请按照下例写注释标头://**************************************************//@FileName:RAngle.h:theinterfaceofCRAngle//@version:V1.0//@Copyright:(c)1998-1999*********公司技???部//@Designer:***//@Creater::***//@BeginDate:2001.10.9//@EndDate:2001.11.9//*****************FirstModify*******************//@Modfier://修改人://@ModfyDate://@ModfyContext://*************************************************§3.3类的注释类的说明注释应该放在头文件中(H文件中.CPP文件中无)类注释的模板为://@Description://Thisclassimplementthebasefuncitonofimage.//CSSImageisthebaseclassofSmioslImageGroupabout//imageprocess.Everyclasswhenuseimagepleaseusethe//class.donotcreatenewImageC\C++代码编写规范Ver1.17//baseclass.butyoucaninheritonenewclassfrom//CSSImage.ThisclasshaveCSSmemorymember.sotheclass//canautomanagememory//@~Description//@Example://CSImageimgName;//ImgName.SetImage(nwidth,nHeight,impBuffer,true);//IMGPTRimBuffer=ImgName.GetAddress();//@~ExampleclassCSSImage{public:friendclassCSSImage;CSSImage();//Constructoneemptyimage//@Description://ConstructoneimageassameascIimage,butdon'tallocate//newimagebuffer.thatmeanstheimagebufferisassame//asthe
本文标题:某知名软件公司内部 C++开发标准
链接地址:https://www.777doc.com/doc-4236197 .html