1 / 42
文档名称:

CC 编码规范.doc

格式:doc   页数:42页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

CC 编码规范.doc

上传人:ffy51856fy 2016/6/19 文件大小:0 KB

下载得到文件列表

CC 编码规范.doc

文档介绍

文档介绍:CC++ 编码规范 C/C++ 编码规范引言今天人们越来越明白软件设计更多地是一种工程, 而不是一种个人艺术。由于大型产品的开发通常由很多的人协同作战, 如果不统一编程规范, 最终合到一起的程序, 其可读性将较差, 这不仅给代码的理解带来障碍, 增加维护阶段的工作量, 同时不规范的代码隐含错误的可能性也比较大。 BELL 实验室的研究资料表明, 软件错误中 18% 左右产生于概要设计阶段, 15% 左右产生于详细设计阶段,而编码阶段产生的错误占的比例则接近 50% ; 分析表明, 编码阶段产生的错误当中, 语法错误大概占 20% 左右,而由于未严格检查软件逻辑导致的错误、函数(模块)之间接口错误及由于代码可理解度低导致优化维护阶段对代码的错误修改引起的错误则占了一半以上。可见, 提高软件质量必须降低编码阶段的错误率。如何有效降低编码阶段的错误呢? BEL L 实验室的研究人员制定了详细的软件编程规范, 并培训每一位程序员,最终的结果把编码阶段的错误降至 10% 左右, 同时也降低了程序的测试费用,效果相当显著。本文从代码的可维护性( 可读、可理解性、可修改性)、代码逻辑与效率、函数(模块)接口、可测试性四个方面阐述了软件编程规范, 规范分成规则和建议两种, 其中规则部分为强制执行项目, 而建议部分则不作强制,可根据习惯取舍。 2. 编码规范 . 排版风格< 规则 1> 程序块采用缩进风格编写,缩进为 4 个空格位。排版不混合使用空格和 TAB 键。< 规则 2> 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如- > ),后不应加空格。采用这种松散方式编写代码的目的是使代码更加清晰。例如: (1) 逗号、分号只在后面加空格 printf("%d %d %d" , a, b, c); (2) 比较操作符, 赋值操作符"=" 、"+=" ,算术操作符"+" 、"%" ,逻辑操作符"&&" 、"&" , 位域操作符"<<" 、"^" 等双目操作符的前后加空格 if(lCurrentTime >= MAX_TIME_VALUE) a=b+ c; a *= 2; a=b^ 2; (3)"!" 、"~" 、"++" 、"--" 、"&" ( 地址运算符) 等单目操作符前后不加空格*pApple = 'a'; // 内容操作"*" 与内容之间 flag = !bIsEmpty; // 非操作"!" 与内容之间 p= &cMem; // 地址操作"&" 与内容之间 i++; // "++","--" 与内容之间(4)"->" 、"." 前后不加空格 p->id = pId; // "->" 指针前后不加空格由于留空格所产生的清晰性是相对的, 所以, 在已经非常清晰的语句中没有必要再留空格,如最内层的括号内侧( 即左括号后面和右括号前面) 不要加空格, 因为在 C/C++ 语言中括号已经是最清晰的标志了。 8BR> 另外, 在长语句中, 如果需要加的空格非常多, 那么应该保持整体清晰,而在局部不加空格。最后,即使留空格,也不要连续留两个以上空格( 为了保证缩进和排比留空除外)。< 规则 3> 函数体的开始, 类的定义, 结构的定义, if、 for 、 do、 while 、 switch 及 case 语句中的程序都应采用缩进方式,憑捄蛻} 捰禀独占一行并且位于同一列,同时与引用它们的语句左对齐例如下例不符合规范。 for ( ... ){ ... // 程序代码} if( ... ){ ... // 程序代码} void DoExam( void ){ ... // 程序代码} 应如下书写。 for ( ... ){ ... // 程序代码} if( ... ){ ... // 程序代码} void DoExam( void ){ ... // 程序代码}< 规则 4> 功能相对独立的程序块之间或 for 、 if、 do、 while 、 switc h 等语句前后应加一空行。例如以下例子不符合规范。例一: if(! ValidNi( ni)) { ... // 程序代码} nRepssnInd = SsnData[ index ].nRepssnIndex ; nRepssnNi = SsnData[ index ].ni ; 例二: char *pContext; int nIndex; long lCounter; pContext = new (CString); if(pContext == NULL) { return FALSE; } 应如下书写例一: if(! ValidNi( ni)) { ... // 程序代码} nReps