- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
引言今天人们越来越明白软件设计更多地是一种工程而不是一种个人.PDF
引言
今天人们越来越明白软件设计更多地是一种工程 而不是一种个人艺术 由于大型产品的开
发通常由很多的人协同作战 如果不统一编程规范 最终合到一起的程序 其可读性将较
差 这不仅给代码的理解带来障碍 增加维护阶段的工作量 同时不规范的代码隐含错误的
可能性也比较大
BELL 实验室的研究资料表明 软件错误中18%左右产生于概要设计阶段 15%左右产生于详细
设计阶段 而编码阶段产生的错误占的比例则接近50% 分析表明 编码阶段产生的错误当
中 语法错误大概占20%左右 而由于未严格检查软件逻辑导致的错误 函数 模块 之间
接口错误及由于代码可理解度低导致优化维护阶段对代码的错误修改引起的错误则占了一半
以上
可见 提高软件质量必须降低编码阶段的错误率 如何有效降低编码阶段的错误呢 BELL 实
验室的研究人员制定了详细的软件编程规范 并培训每一位程序员 最终的结果把编码阶段
的错误降至10%左右 同时也降低了程序的测试费用 效果相当显著
本文从代码的可维护性 可读 可理解性 可修改性 代码逻辑与效率 函数 模块 接
口 可测试性四个方面阐述了软件编程规范 规范分成规则和建议两种 其中规则部分为强
制执行项目 而建议部分则不作强制 可根据习惯取舍
2. 编码规范
2.1. 排版风格
规则 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++语言中括号已
经是最清晰的标志了
另外 在长语句中 如果需要加的空格非常多 那么应该保持整体清晰 而在局部不加空
格
最后 即使留空格 也不要连续留两个以上空格(为了保证缩进和排比留空除外)
规则3 函数体的开始 类的定义 结构的定义 if for do while switch 及case 语句
中的程序都应采用缩进方式 憑捄蛻}捰禀独占一行并且位于同一列 同时与引用它们的语
句左对齐
例如下例不符合规范
for ( ... ) {
... // 程序代码
}
if ( ... )
{
... // 程序代码
}
void DoExam( void )
{
... // 程序代码
}
应如下书写
for ( ... )
{
... // 程序代码
}
if ( ... )
{
... // 程序代码
}
void DoExam( void )
{
... // 程序代码
}
规则4 功能相对独立的程序块之间或for if do while switch 等语句前后应加一空
行
例如以下例子不符合规范
例一
if ( ! ValidNi( ni ) )
{
... // 程序代码
}
nRepssnInd = SsnData[ index ].nReps
文档评论(0)