C&C++(ProC)编码规范_cgd

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C&C++(Pro*C)编码规范版本号:1.0文档编号:ISW-WI-C&T-05密级:机密浪潮世科(山东)信息技术有限公司C&C++(Pro*C)编码规范版本号:1.0文档编号:ISW-WI-C&T-05Page2of13文档修订版本作成/修改日期编制/修改人批准日批准人描述(注明修改的条款或页)1.02005.6.3秦天民2005.9.20陈颂哲创建C&C++(Pro*C)编码规范版本号:1.0文档编号:ISW-WI-C&T-05Page3of13目录1.规范说明.................................................................................................................................41.1背景说明..........................................................................................................................41.2目的..................................................................................................................................41.3内容说明...........................................................................................错误!未定义书签。2.C/C++编程规范......................................................................................................................42.1代码组织与风格..............................................................................................................42.2注释..................................................................................................................................52.3命名..................................................................................................................................52.4声明..................................................................................................................................62.5表达式和语句..................................................................................................................62.6复用..................................................................................................................................72.7特殊限制..........................................................................................................................8附1.格式模板..............................................................................................................................91.命名的约定.........................................................................................................................92.注释...................................................................................................................................113.编程风格...........................................................................................................................12C&C++(Pro*C)编码规范版本号:1.0文档编号:ISW-WI-C&T-05Page4of131.规范说明1.1背景说明大型软件项目通常由相应的大型开发团队承担。大型团队生成的代码要有项目范围内可评测的质量,代码必须遵从于某一标准并以此来评价。1.2目的本文表述C/C++编程的规则,用来作为编程的标准,使达到以下目的:增加开发过程代码的强壮性、可读性、易维护性在项目范围内统一代码风格。通过人为以及自动的方式对最终软件应用质量标准。使新的开发人员快速适应项目氛围。2.C/C++编程规范2.1代码组织与风格1)可读性第一,效率第二。2)程序首先是正确,其次是优美。3)程序结构清晰,简单易懂。4)循环、分支层次不要超过五层。5)使用括号以避免二义性。6)对嵌套语句使用小的、一致的缩进风格。缩进量一致并以Tab键为单位,定义Tab为4个空格,不要空格和TAB键混合使用7)防止重复文件包含的保护例:#ifndef_WINSS_H_#define_WINSS_H_…………#endif)头文件的作用早期的编程语言如Basic、Fortran没有头文件的概念,C++/C语言的初学者虽C&C++(Pro*C)编码规范版本号:1.0文档编号:ISW-WI-C&T-05Page5of13然会用使用头文件,但常常不明其理。这里对头文件的作用略作解释:(1)通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。(2)头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。8)头文件的结构头文件由三部分内容组成:(1)头文件开头处的版权和版本声明(2)预处理块。(3)函数和类结构及公共变量的声明等。9)版权和版本声明2.2注释1)注释原则上要求使用中文。注释与源代码尽可能靠拢。注释可以与语句在同一行,也可以在上行。2)一目了然的语句不加注释。3)C++程序应使用C++风格注释分界符//,而非C风格的/*...*/。4)每个源程序文件,都有文件头说明。5)每个函数,都有函数头说明。6)注释的作用范围可以为:定义、引用、条件分支以及一段代码。7)主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义。8)常量定义(DEFINE)有相应说明。9)处理过程的每个阶段都有相关注释说明。10)在典型算法前都有注释。2.3命名1)不要声明以一个或多个下划线('_')开头的名称。2)避免使用只靠字母大小写才能区分的名称。intx,X;//变量x与X容易混淆voidfoo(intx);//函数foo与FOO容易混淆voidFOO(floatx);3)选择清晰的、易辨认的、有意义的名称。C&C++(Pro*C)编码规范版本号:1.0文档编号:ISW-WI-C&T-05Page6of134)程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解。5)变量的名字应当使用“名词”或者“形容词+名词”floatoldValue;floatnewValue静态变量加前缀s_(表示static)。如果不得已需要全局变量,则使全局变量加前缀g_(表示global)。6)类的名称使用“名词”或“名词”短语。7)过程类型的函数名称使用“动词”。8)异常名选用否定的含义。如使用以下词的一个bad、incomplete、invalid、wrong、missing或illegal作为名称的一部分,而不要机械的套用error或exception,因为它们并不表达具体的信息。2.4声明1)不要随意定义全局变量,尽量使用局部变量。2)所有变量在调用前必须被初始化。3)尽量使用class而不是struct来实现抽象数据类型。4)避免在类声明中定义函数。5)将析构函数总是声明为virtual类型。如果基类的析构函数没有声明为virtual类型,则通过基类的指针或引用删除派生类对象将导致不确定的行为。6)函数要尽量只有一个返回点。2.5表达式和语句1)当从布尔表达式分支时使用if语句。当从离散值分支时使用switch语句。当分支条件为离散值时使用switch语句而不使用一系列的“elseif”。2)一定为switch语句提供一个default分支以记录错误。3)当循环需要迭代前测试时使用for语句或while语句。4)假设布尔变量名字为flag,它与零值比较的标准if语句如下if(flag)//表示flag为真if(!flag)//表示flag为假C&C++(Pro*C)编码规范版本号:1.0文档编号:ISW-WI-C&T-05Page7of135)当循环需要迭代后测试时使用dowhile语句。6)不可将浮点变量用“==”或“!=”与任何数字比较。无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“=”或“=”形式。if(x==0.0)//隐含错误的比较指针变量与零值比较if(p==NULL)//p与NULL显式比较,强调p是指针变量if(p!=NULL)程序中有时会遇到if/else/return的组合if(condition)returnx;returny;改写为if(condition){returnx;}else{returny;}或者改写成更加简练的return(condition?x:y);7)循环中避免使用jump语句,不要使用continue不成熟的跳转到下一迭代上。这减少了控制路径流程的数量,使代码更易理解。8)禁止GOTO语句。9)避免不必要的分支。10)不要轻易用条件分支去替换逻辑表达式。??2.6复用1)尽量使用标准库函数和公共函数。2)重复使用的完成相对独立功能的算法或代码应抽象为公共控件或类。3)公共控件或类应考虑OO思想,减少外界联系,考虑独立性或封装性。4)公共控件或类应建立使用模板。C&C++(Pro*C)编码规范版本号:1.0文档编号:ISW-WI-C&T-05Page8of135)谨慎使用多继承。因为多继承带来了许多额外的复杂性。2.7特殊限制1)已删除的对象指针要赋予空指针值。设置已删除对象的指针为空指针可避

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功