C++编码的Standard and Style

Standard and Style

*理论要求:

1. 基本要求

 1) 程序结构清析,简单易懂,单个函数的程序行数尽量不要超过100行。

 2) 打算干什么,要简单,直接了当,代码精简,避免垃圾程序。

 3) 尽量使用标准库函数和公共函数。

 4) 不要随意定义全局变量,尽量使用局部变量。

 5) 使用括号以避免二义性。

 

2.可读性要求

 1) 可读性第一,效率第二。

 2) 保持注释与代码完全一致。

 3) 每个源程序文件,都有文件头说明,说明规格见‘具体要求’。

 4) 每个函数,都有函数头说明,说明规格见‘具体要求’。

 5) 主要变量(结构、联合等)定义或引用时,注释能反映其含义。

 7) 常量定义(DEFINE)有相应说明。

 8) 处理过程的每个阶段都有相关注释说明。

 9) 在典型算法前都有注释。

 10) 利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab 4个字节。

 11) 循环、分支层次不要超过五层。

 12) 注释可以与语句在同一行,也可以在上行,但是不要出现在下一行,否则会引起歧义。

 13) 空行和空白字符也是一种特殊注释。

 14) 一目了然的语句不加注释。

 15) 注释的作用范围可以为:定义、引用、条件分支以及一段代码。

 16) 注释行数(不包括程序头和函数头说明部份)应占总行数的 1/5 1/3

 

3. 结构化要求

 1) 禁止出现两条等价的支路。

 2) 禁止GOTO语句。

 3) IF 语句来强调只执行两组语句中的一组。禁止 ELSE GOTO ELSE RETURN

 4) CASE 实现多路分支。

 5) 避免从循环引出多个出口。

 6) 函数只有一个出口。

 7) 不使用条件赋值语句。

 8) 避免不必要的分支。

 9) 不要轻易用条件分支去替换逻辑表达式。

 

4. 正确性与容错性要求

 1) 程序首先是正确,其次是优美

 2) 无法证明你的程序没有错误,因此在编写完一段程序后,应先回头检查。

 3) 改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。

 4) 所有变量在调用前必须被初始化。

 5) 对所有的用户输入,必须进行合法性检查。

 6) 不要比较浮点数的相等,

  如: 10.0 * 0.1 == 1.0 不可靠

 7) 程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否逻辑锁定、打印机是否联机等。

 8) 单元测试也是编程的一部份,提交联调测试的程序必须通过单元测试。

 

5. 可重用性要求

 1) 重复使用的完成相对独立功能的算法或代码应单独分类归纳。

 2) 要重用程序应减少外界联系,考虑独立性或封装性。

*具体要求:

1. 所有的注释用英文,在函数内部的注释只能使用 //,在函数外部各种注释方法均可使用

 

2. .h/.c的开头应有一段格式统一的说明,内容包括:

  1)  文件名 (FileName)

 2)  创建人 (Creater),以及修改人的名字(Mender)

 3)  文件创建时间 (Create Time),以及修改的时间(Mend Time);时间要使用国际方式( 10/30/2003 )

  4)  简短说明文件功能、用途 (Comment)

 

3. 除非极其简单,否则对函数应有注释说明。内容包括:功能、入口/出口参数,必要时还可有备注或补充说明。

 

4. 每列代码的长度推荐为 80列,最长不得超过120列;折行以对齐为准。

 

5. 循环、分支代码,判断条件与执行代码不得在同一行上。

 

6. 指针的定义,* 号与类型之间一个空格,后边紧接变量名。

 例如:int *pnsize;

    否则容易引起歧义

  比如:int* a, b; //看起来b好像也是个指针,其实不是。

 

7. 函数入口参数有缺省值时,应注释说明。

 

8. else if 必须写在一行。应该尽量避免else if这样的结构

 

9. 与‘{’、‘}’有关的各项规定:

  1)  {’、‘}’应独占一行。在该行内可有注释。

  2)  {’必须另起一行,‘{ 之前不要有缩近,‘{ 之后的代码必须缩进一个Tab( = 4 spaces)。‘{’与‘}’必须在同一列上。

  3)  在循环、分支之后若只有一行代码,不允许省略‘{’、‘}’。若省略后可能引起歧义或者出现改动后的其他低级错误。

 4)  switch, case, do, while 等语句的实现代码建议用 '{','}' 包括,这样就很容易的得到整个的代码段。

 

10. 与空格有关的各项规定:

 1)  在所有两目、三目运算符的两边都必须有空格。在单目运算符两端不必空格。但在‘—>’、‘.’、‘[’、‘]’等运算符前后,及‘&’(取地址)、‘*’(取值)等运算符之后不得有空格。

 2)  forwhileif 等关键词之后应有1个空格,再接‘(’,之后无空格;在结尾的‘)’前不得有空格。

 3)  调用函数、宏时,‘(’、‘)’前后不得有空格。

 4)  类型强制转换时,‘(’‘)’前后不得有空格

 

11. 与缩进有关的各项规定:

 1)  缩进以 Tab 为单位。1 Tab 4 个空格

 2)  下列情况,代码缩进一个 Tab:

  a.  函数体相对函数名及'{''}'

  b.  ifelseforwhiledo 等之后的代码。

  c.  一行之内写不下,折行之后的代码,应在合理的位置进行折行。若有 + - * / 等运算符,运算符应该放在下一行的行首,而不应该在上一行的行首

 

12. 常量与变量进行相等的比较时,要把常量放在前边,避免造成赋值的低级错误。

 例如:if (100 == i) //正确写法

       if (i == 100) //不规范写法

  原因:'=='经常不小心写成'=',如果采用第一种规范写法,就可以避免;但是如果采用第二种写法,就造成了“正确”的低级错误。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值