C/C++ 程序员编程规范之注释

编程规范(注释)

注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。


说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释.

     注释适当列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。

源文件头部也应进行注释.

     列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。

函数头部应进行注释

     列出:函数的目的/功能、输入参数、输出参数、返回值、调用关系(函数、表)等。

边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。

注释的内容要清楚、明了,含义准确,防止注释二义性。

    

避免在注释中使用缩写,特别是非常用缩写。

注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置.

   如放于上方则需与其上面的代码用空行隔开。

对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义

    变量、常量、宏的注释应放在其上方相邻位置或右方。

注释格式尽量统一,建议使用/* …… */

在代码的功能、意图层次上进行注释,提供有用、额外的信息

在程序块的结束行右方加注释标记,以表明某程序块的结束

对于switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处理,必须在该case语句处理完、下一个case语句前加上明确的注释

变量的定义和分支语句(条件分支、循环语句等)增加注释

将注释与其上面的代码用空行隔开,注释与所描述内容进行同样的缩排.

全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明.

数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,必须加以注释。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释放在此域的右方。

 

其他

1. **文档生成工具**:如果你使用的编程语言或框架有相关的文档生成工具(如Java的Javadoc、Python的Docstrings、C++的Doxygen等),建议遵循相应的注释格式,以便自动生成API文档。
  

2. **代码示例**:对于复杂的函数或模块,可以在注释中给出一个简单的使用示例。
 

    def complex_function(param1, param2):
        """
        This function does something complex.
        
        Example:
        ```
        result = complex_function(1, 2)
        ```
        """
        pass

3. **引用和链接**:如果代码是基于某篇论文、算法描述或其他外部资源,建议在注释中给出相关的引用或链接。

4. **TODO 和 FIXME 标签**:在注释中使用 `TODO:` 标签来标记未完成的工作,或者使用 `FIXME:` 标签来标记需要修复的问题。
 

    // TODO: implement this function
    // FIXME: this part of code has a bug

5. **单位和约束**:如果变量或函数参数有单位(如时间、长度等),或者有某些约束(如取值范围、是否可以为null等),这些信息也应该在注释中明确。

6. **版本和修改历史**:除了文件头部,当某个函数或模块有重大更改时,也可以在其注释中添加版本或修改历史。

7. **注释的可读性**:注释也是代码的一部分,因此也要保证其可读性。避免使用过于复杂的句子或专业术语,确保即使不熟悉项目的人也能理解。

8. **国际化**:如果你的代码将被多国或多文化的开发者使用,考虑使用英语进行注释,或者提供多语言的注释选项。

9. **避免显而易见的注释**:如果代码本身就非常清晰和自注释,过多的注释反而会降低代码的可读性。

记住,好的代码应该是“自注释”的,即通过合理的命名和结构使代码尽量易于理解。然而,注释是为了解释代码不能清楚表达的所有信息,如设计思想、重要决策等。因此,注释和代码应该相互补充。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
《高质量程序设计指南:C++C语言》以轻松幽默的笔调向读者论述了高质量软件开发方法与C++/C编程规范。它是作者多年从事软件开发工作的经验总结。《高质量程序设计指南:C++C语言》共11章,第1章到第9章重点阐述 C++/C编程风格、面向对象程序设计方法和一些技术专题;第10章阐述STL 的原理和使用方法。 《高质量程序设计指南:C++C语言》第1版和第2版部分章节曾经在Internet上广泛流传,被国内IT企业的不少软件开发人员采用。《高质量程序设计指南:C++C语言》的附录C《大学十年》是作者在网上发表的一个短篇传记,文中所描述的充满激情的学习和生活态度,感染了大批莘莘学子。 请花一两个小时认真阅读这本百页经书,你将会获益匪浅,如今在Internet上流传的“真正”的程序员据说是这样的:真正的程序员没有进度表,只有讨好领导的马屁精才有进度表,真正的程序员会让领导提心吊胆。真正的程序员不写使用说明书,用户应当自己去猜想程序的功能。真正的程序员几乎不写代码注释,如果注释很难写,它理所当然也很难读。 真正的程序员不画流程图,原始人和文盲才会干这事。真正的程序员不看参考手册,新手和胆小鬼才会看。真正的程序员不写文档也不需要文档,只有看不懂程序的笨蛋才用文档。 真正的程序员认为自己比用户更明白用户需要什么。真正的程序员不接受团队开发的理念,除非他自己是头头。真正的程序员的程序不会在第一次就正确运行,但是他们愿意守着机器进行若干个30小时的调试改错。真正的程序员不会在上午9:00到下午5:00之间工作,如果你看到他在上午9:00工作,这表明他从昨晚一直干到现在。??
以下是一个简单的婚姻匹配算法的C++代码注释: ```c++ #include <iostream> #include <cstring> #include <queue> using namespace std; const int MAXN = 1005; // 最大人数 int n; // 人数 int prefer[MAXN][MAXN]; // 存储每个人对每个人的偏好程度 int match[MAXN]; // 存储每个人匹配的对象 int inv_match[MAXN]; // 存储每个人被哪个对象匹配了 void stable_marriage() { queue<int> q; // 存储等待匹配的男性 memset(match, -1, sizeof(match)); // 初始化匹配数组为-1 memset(inv_match, -1, sizeof(inv_match)); // 初始化逆向匹配数组为-1 // 将所有男性加入队列 for (int i = 1; i <= n; i++) { q.push(i); } // 开始匹配过程 while (!q.empty()) { int man = q.front(); q.pop(); for (int i = 1; i <= n; i++) { int woman = prefer[man][i]; if (inv_match[woman] == -1) { // 女性还没有匹配,直接匹配 match[man] = woman; inv_match[woman] = man; break; } else if (prefer[woman][man] > prefer[woman][inv_match[woman]]) { // 女性更喜欢当前男性,更换匹配 q.push(inv_match[woman]); match[inv_match[woman]] = -1; match[man] = woman; inv_match[woman] = man; break; } } } } int main() { cin >> n; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { cin >> prefer[i][j]; } } stable_marriage(); for (int i = 1; i <= n; i++) { cout << i << " " << match[i] << endl; } return 0; } ``` 注释如下: 1. `MAXN` 定义了最大人数。 2. `n` 存储了人数。 3. `prefer` 数组存储了每个人对每个人的偏好程度。 4. `match` 数组存储了每个人匹配的对象,初始化为-1。 5. `inv_match` 数组存储了每个人被哪个对象匹配了,初始化为-1。 6. `stable_marriage` 函数是核心函数,用于进行稳定婚姻匹配。 7. `q` 是一个队列,用于存储等待匹配的男性。 8. `memset` 函数用于初始化数组。 9. `for` 循环将所有男性加入队列。 10. `while` 循环表示匹配过程,直到队列为空。 11. `man` 表示当前男性。 12. `for` 循环表示当前男性尝试匹配每一个女性。 13. `woman` 表示当前女性。 14. 如果女性还没有匹配,则直接匹配。 15. 如果女性更喜欢当前男性,则更换匹配,将原来的男性加入队列。 16. `main` 函数用于读入输入、调用稳定婚姻匹配函数并输出结果。 以上是一个简单的婚姻匹配算法的C++代码注释,仅供参考。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泡沫o0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值