C++编码规范(1):代码注释

当你阅读别人的代码时如果没有注释那会是件比较痛苦的事.一说到注释我们马上想到是通过//或/* */这样来添加一些描述信息.这只是狭义的注释.

广义的注释我们可以理解为,任何有助于理解代码的信息都可以看成注释.

我们可以把写代码和写文章类比下.自然语言会有词法,句法,语义这几个概念.代码中的语法和句法就相当于一个编程语言中的基本语法规范.这是我们学习一门编程语言必须掌握的.所以注释的时候一般不会涉及到这些信息.

注释主要涉及到语义的描述.语义从大的方向,软件产品面向的应用来说,就是要解决的问题本身的逻辑,如果是些应用软件也可以叫业务逻辑.我们把业务逻辑理清头绪后就会来个啥数据建模之类的.然后写设计文档之类的,有啥概要设计与详细设计,这些文档可以看成非常重要的注释.

然后就是写到代码里的注释了,通过//或/* */标识出来.还有一种注释叫自我注释,就是通过函数或变量名字就得得到一些有用的信息

 

这里主要讲下用//或/* */做的注释

用// 还是/* */就看你自己的偏好了.最重要的是保持一致,就是在一个项目中大家达成一致,全部用哪一种或者在某个地方用//,另外的地方用/* */

 

注释的位置及常见内容

 

1.文件注释

在C++的代码都是分布在一个个的头文件和源文件中,如果是用的VS则是h后缀文件和cpp后缀文件. 当然了有时你用以内联函数还可能会有inl文件.每个文件的开头部分你可以添加注释信息.

内容一般是:版权,作者,编写日期,功能描述.例如

/**************************************************************************

Copyright:MyCompany

Author: Arwen

Date:2013-01-09

Description:Provide  functions  to connect Oracle

**************************************************************************/

或者

//Copyright:MyCompany

//Author: Arwen

//Date:2013-01-09

//Description:Provide functions to connect Oracle

 

有时如果修改了代码,还可以添加修改人,日期,修改内容有目的这些信息.

 

2.类注释

一般是简单的说下这个类的功能,如果你在文件开头已经描述了这里也可以省略.如果要注释的话就可以这样简单的描述下.

// COleDataObject -- simple wrapper for IDataObject

class COleDataObject
{

}

或者

/*COleDataObject -- simple wrapper for IDataObject*/

 

3.函数注释

描述函数的功能及参数,其他相关信息.例如

//Summary:  connect the database

//Parameters:

//       connInfo:A class contains the connect info ,such as user name ,pwd,etc.

//       directConnect : use TNS name or use direct connection info

//Return : true is connect successfully.

bool ConnectDatabase(ConnectInfo connInfo, bool directConnect);

 

或者

/*

*Summary: connect the database

*Parameters:

*     connInfo:A class contains the connect info ,such as user name ,pwd,etc.*    

*     directConnect : use TNS name or use direct connection info

*Return : true is connect successfully.

*/

 

 

4.变量注释

一个变量如果代表的意思不容易从变量名看出来,而且又挺重要的话最好也加点注释.例如

UINT m_nGrowBy;     // number of cache elements to grow by for new allocs

或者

UINT m_nGrowBy;     /* number of cache elements to grow by for new allocs*/

 

5.实现注释

在一些逻辑性很强,不容易理解的代码块前添加注释.特别是是像一些算法,看起来就几行,但想个半天都未必明白到底是啥意思来着.

例如

// copy elements into the empty space
 while (nCount--)
      m_pData[nIndex++] = newElement;

还有就是如果想针对函数的某些个参数做些注释,那最好把参数分几行写.

void MyFunction(string name, //This is my name

                         int age)

 

另外有时一个函数很长,里面有奶多个大括号{ } ,这样一嵌套,有时你不知道谁对应谁了,你要往里面插入代码就容易出错.你也可以在些结尾的大括号加个注释,表明它是哪个if或while语句的结束处.

在C#中是可以通过#region 加 #endregion 来做注释.同时开发环境VS能提供支持让你方便的折叠这样注释的代码.

VS也支持在C++中通过#pragma region 与 #pragma endregion来做注释,但这在其它编译器中不会被识别,所以需要考虑到跨平台的话或者会使用不同的编译器的话就最好别用.

 

6.TODO 注释

todo的意思就是待做的事.比如你代码写了一半,然后下班了.为了方便你第二天很快的找到那具体地方,或者防止你忘记.就可以用todo注释下.因为一些开发环境提供了对它的支持,可以让你方便的找到哪些个地方有todo注释,起个书签的作用.你选View-->Task List,然后在下面的下拉列表中选择comments就会列出所有TODO注释信息.

另外你也可以写个TODO留着以后实现那功能也行,注释信息一般可以写上你的名字和邮箱,然后说下待实现的功能或其他事项



Reference:

1:http://blog.csdn.net/weiwenhp/article/details/8484973#t3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
华为代码规范,适用 C/C++ 1 概述 ................................................................................................................................................................... 5 1.1 编写目的 ........................................................................................................................................... 5 1.2 文档约定 ........................................................................................................................................... 5 1.3 预期的读者和阅读建议 ................................................................................................................... 5 1.4 参考文献 ........................................................................................................................................... 5 2 排版要求 ........................................................................................................................................................... 5 2.1 程序块缩进 ....................................................................................................................................... 5 2.2 程序块之间空行 ............................................................................................................................... 5 2.3 长语句和长表达式 ........................................................................................................................... 6 2.4 循环、判断等长表达式或语句 ....................................................................................................... 7 2.5 长参数 ............................................................................................................................................... 7 2.6 短语句 ............................................................................................................................................... 8 2.7 条件、循环语句 ............................................................................................................................... 8 2.8 语句对齐 ........................................................................................................................................... 8 2.9 函数、过程和结构等语句块 ........................................................................................................... 9 2.10 程序块分界符 ................................................................................................................................... 9 2.11 操作符前后空格 ............................................................................................................................. 10 2.12 其他 ..................................................................................................................................................11 3 注释 ..................................................................................................................................................................11 3.1 有效注释量 ......................................................................................................................................11 3.2 公司标识 ..........................................................................................................................................11 3.3 说明性文件 ..................................................................................................................................... 12 3.4 源文件头 ......................................................................................................................................... 13 3.5 函数头部说明 ................................................................................................................................. 13 3.6 注释代码一致 ............................................................................................................................. 14 3.7 注释内容 ......................................................................................................................................... 14 3.8 注释缩写 ......................................................................................................................................... 14 3.9 注释位置 ......................................................................................................................................... 14 3.10 变量、常量注释 ............................................................................................................................. 15 3.11 数据结构的注释 ............................................................................................................................. 15 3.12 全局变量 ......................................................................................................................................... 16 3.13 注释缩排 ......................................................................................................................................... 16 3.14 注释代码之间空行 ..................................................................................................................... 17 3.15 变量定义、分支语句 ..................................................................................................................... 17 3.16 其他 ................................................................................................................................................. 19 4 标识符命名 ..................................................................................................................................................... 20 4.1 命名清晰 ......................................................................................................................................... 20 4.2 特殊命名需注释 ............................................................................................................................. 21 4.3 命名风格保持一致 ......................................................................................................................... 21 4.4 变量命名 ......................................................................................................................................... 21 4.5 命名规范与系统风格一致 ............................................................................................................. 22 4.6 其他 ................................................................................................................................................. 22 5 可读性 ............................................................................................................................................................. 23 5.1 运算符优先级 ................................................................................................................................. 23 第 3 页 共 69 页 5.2 避免直接使用数字作为标识符 ..................................................................................................... 24 5.3 其他 ................................................................................................................................................. 24 6 变量、结构 ..................................................................................................................................................... 25 6.1 公共变量 ......................................................................................................................................... 25 6.2 公共变量说明 ................................................................................................................................. 26 6.3 公共变量访问说明 ......................................................................................................................... 26 6.4 公共变量赋值 ................................................................................................................................. 26 6.5 防止局部变量与公共变量同名。 ................................................................................................. 26 6.6 严禁使用未经初始化的变量作为右值。 ...................................................................................... 26 6.7 其他 ................................................................................................................................................. 27 7 函数、过程 ..................................................................................................................................................... 34 7.1 对所调用函数的错误返回码要仔细、全面地处理。 .................................................................. 34 7.2 明确函数功能,精确(而不是近似)地实现函数设计。 .......................................................... 34 7.3 局部变量 ......................................................................................................................................... 34 7.4 全局变量 ......................................................................................................................................... 34 7.5 接口函数参数 ................................................................................................................................. 35 7.6 其他 ................................................................................................................................................. 35 8 可测性 ............................................................................................................................................................. 44 8.1 调测开关 ......................................................................................................................................... 44 8.2 打印信息 ......................................................................................................................................... 45 8.3 单元测试 ......................................................................................................................................... 45 8.4 集成测试 ......................................................................................................................................... 45 8.5 断言使用 ......................................................................................................................................... 45 8.6 设置与取消有关测试手段时,不能影响软件功能功能 .............................................................. 48 8.7 版本维护 ......................................................................................................................................... 48 8.8 其他 ................................................................................................................................................. 48 9 程序效率 ......................................................................................................................................................... 50 9.1 编程时要经常注意代码的效率。 ................................................................................................. 50 9.2 提高代码效率 ................................................................................................................................. 50 9.3 全局效率高于局部效率 ................................................................................................................. 51 9.4 提高代码空间效率 ......................................................................................................................... 51 9.5 循环体内工作量最小化 ................................................................................................................. 52 9.6 其他 ................................................................................................................................................. 53 10 质量保证 ................................................................................................................................................. 56 10.1 在软件设计过程中构筑软件质量。.............................................................................................. 56 10.2 代码质量保证优先原则 ................................................................................................................. 56 10.3 只引用属于自己的存贮空间。 ..................................................................................................... 56 10.4 防止引用已经释放的内存空间。 ................................................................................................. 56 10.5 内存及时释放 ................................................................................................................................. 57 10.6 文件句柄及时关闭 ......................................................................................................................... 57 10.7 防止内存操作越界 ......................................................................................................................... 58 10.8 认真处理程序所能遇到的各种出错情况 ...................................................................................... 59 10.9 初始化变量 ..................................................................................................................................... 59 10.10 数据一致性检查 ............................................................................................................................. 59 10.11 严禁随意更改其它模块或系统的有关设置和配置 ...................................................................... 59 10.12 不能随意改变与其它模块的接口 ................................................................................................. 59 第 4 页 共 69 页 10.13 系统接口 ......................................................................................................................................... 59 10.14 编程时,要防止差 1 错误 ............................................................................................................. 61 10.15 操作符检查 ..................................................................................................................................... 61 10.16 分支语句写完整 ............................................................................................................................. 62 10.17 使用 return 语句 .............................................................................................................................. 62 10.18 不要滥用 goto 语句 ........................................................................................................................ 62 10.19 其他 ................................................................................................................................................. 62 11 代码编辑、编译、审查 ......................................................................................................................... 65 11.1 打开编译器的所有告警开关对程序进行编译 .............................................................................. 65 11.2 在产品软件(项目组)中,要统一编译开关选项 ...................................................................... 65 11.3 通过代码走读及审查方式对代码进行检查。 .............................................................................. 65 11.4 测试部测试产品之前,应对代码进行抽查及评审 ...................................................................... 65 11.5 其他 ................................................................................................................................................. 65 12 代码测试、维护 ..................................................................................................................................... 67 12.1 单元测试要求至少达到语句覆盖 ................................................................................................. 67 12.2 单元测试开始要跟踪每一条语句,并观察数据流及变量的变化 .............................................. 67 12.3 清理、整理或优化后的代码要经过审查及测试。 ...................................................................... 67 12.4 代码版本升级要经过严格测试 ..................................................................................................... 67 12.5 使用工具软件对代码版本进行维护.............................................................................................. 67 12.6 正式版本上软件的任何修改都应有详细的文档记录 .................................................................. 67 12.7 其他 ................................................................................................................................................. 67 13 宏 ............................................................................................................................................................. 68 13.1 用宏定义表达式时,要使用完备的括号 ...................................................................................... 68 13.2 将宏所定义的多条表达式放在大括号中 ...................................................................................... 68 13.3 使用宏时,不允许参数发生变化 ................................................................................................. 69

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值