C/C++ 代码注释规范及 doxygen 工具

参考

谷歌项目风格指南------注释

C++ doxygen 风格注释示例

ubuntu20 中 doxygen 文档生成

doxygen 官方文档 在 /Doxygen/Special Command/ 章节介绍 doxygen 的关键字

注释说明

注释的目的是提高代码的可读性与可维护性。

C 风格注释

cpp 复制代码
// 单行注释

/*
多行注释
*/

C ++ 风格注释:

cpp 复制代码
/// 单行注释
//! 单行注释

/**
多行注释
*/
/*!
多行注释
*/
  • 文件注释:时间 + 版权 + 维护作者 + 文件内容

  • 类注释:类的功能 + 用法 + 注意事项

  • 函数注释:

    函数声明通常位于头文件,头文件是客户使用函数服务的窗口。在函数声明处需要注释函数功能,解释接口,调用规则,潜在风险等,以避免函数使用不当;

    函数定义通常位于源文件,源文件是程序员维护,实现功能的平台。比喻作平台是因为服务端功能实现可以是由多个程序员共同维护的,注释要注重功能理解以降低代码维护成本。在函数定义处需要注释功能实现细节,编程技巧,算法原理,详细文档资料位置等。

    不要重复函数声明和定义的注释,没有意义!

  • 变量注释:

    成员变量和局部变量:除了简单的变量,都要说明变量的定义和用途。尤其是定义解释至关重要,避免变量被滥用导致歧义!有特定值的变量需要强调特定值。

    全局变量:每个全局变量都要说明定义和用途。

  • 实现注释:对巧妙, 晦涩, 重要的地方加以注释。解释代码段功能或为什么这么处理。

  • TODO注释:对临时方案,不好的代码注释方便日后改进。

  • 弃用注释:在弃用代码上方加// deprecate:弃用说明。弃用代码最好用 // 屏蔽,方便搜索栏发现代码已弃用。

Utuntu20 Vscode Doxygen 自动生成文档

vscode 安装 doxygen documentation generator 插件,在插件的商店页面,点击导航栏的 Config options 可以跳转到 json 配置说明位置。

安装好插件后,在文件头和函数头部打/**回车,就会生成注释。

在 vscode 按 ctrl+shift+p,搜索 "settings",选择首选项配置(JSON)配置 doxygen 参数。

粘贴下面配置:

javascript 复制代码
    // ---------- doxygen 注释配置 ---------- start line

    "doxdocgen.c.triggerSequence": "/**", // 触发 doxygen 注释
    "doxdocgen.c.commentPrefix": " * ", // 中间注释行的前缀
    "doxdocgen.c.firstLine": "/**", // 注释首行
    "doxdocgen.c.lastLine": " */", // 注释尾行

    "doxdocgen.generic.authorName": "jucat",
    "doxdocgen.generic.authorEmail": "lmr2887@163.com",
    "doxdocgen.generic.authorTag": "@author {author} ({email})",
    "doxdocgen.generic.dateFormat": "YYYY-MM-DD",
    "doxdocgen.generic.dateTemplate": "@date {date}",
    "doxdocgen.generic.generateSmartText": false,
    "doxdocgen.generic.boolReturnsTrueFalse": true,
    "doxdocgen.generic.briefTemplate": "@brief {text}",
    "doxdocgen.generic.includeTypeAtReturn": true,
    "doxdocgen.generic.linesToGet": 20,
    "doxdocgen.generic.customTags": [],
    "doxdocgen.generic.paramTemplate": "@param {param} ",
    "doxdocgen.generic.returnTemplate": "@return {type} ",
    "doxdocgen.generic.splitCasingSmartText": true,
    "doxdocgen.generic.filteredKeywords": [],
    "doxdocgen.generic.useGitUserName": false,
    "doxdocgen.generic.useGitUserEmail": false,
    "doxdocgen.generic.commandSuggestion": true,
    "doxdocgen.generic.commandSuggestionAddPrefix": false,

    // 文件头部注释
    "doxdocgen.file.copyrightTag": ["@copyright Copyright (c) {year} jucat"],
    "doxdocgen.file.versionTag": "@version 0.1",
    "doxdocgen.file.fileTemplate": "@file {name}",
    "doxdocgen.file.fileOrder": [
      "file",
      "author",
      "email",
      "brief",
      "version",
      "date",
      "empty",
      "copyright",
      "empty",
      "custom"
    ],

    // 自动生成的函数注释模板,不区分源文件和头文件
    "doxdocgen.generic.order": [
      "brief",
      "tparam",
      "param",
      "return"
    ],

    // 自定义注释模块
    "doxdocgen.file.customTag": [
      "@par 修改日志:",
      "<table>",
      "<tr><th>Date       <th>Version <th>Author  <th>Description",
      "<tr><td>{date} <td>1.0     <td>wangh     <td>内容",
      "</table>",
    ],

    // ---------- doxygen 注释配置 ---------- end line

文档生成

安装 doxygen-gui :

bash 复制代码
sudo apt install doxygen-gui

终端执行命令:

bash 复制代码
doxywizard

doxygen-gui 配置:

运行完成后,在 "文档输出位置" 目录下的 files.html 文件就是代码项目文档。

点击 -> 类列表 ,再点击查看类详细说明。

源文件注释:

头文件注释:

文档效果:

更多 doxygen 关键字参考文章开头的"参考",文档效果就自己测试看看了。

相关推荐
奋飞安全2 分钟前
初试js反混淆
开发语言·javascript·ecmascript
guoruijun_2012_42 分钟前
fastadmin多个表crud连表操作步骤
android·java·开发语言
浪里个浪的10245 分钟前
【C语言】计算3x3矩阵每行的最大值并存入第四列
c语言·开发语言·矩阵
@东辰12 分钟前
【golang-技巧】-自定义k8s-operator-by kubebuilder
开发语言·golang·kubernetes
乐悠小码19 分钟前
数据结构------队列(Java语言描述)
java·开发语言·数据结构·链表·队列
史努比.20 分钟前
Pod控制器
java·开发语言
敲敲敲-敲代码29 分钟前
游戏设计:推箱子【easyx图形界面/c语言】
c语言·开发语言·游戏
ROC_bird..38 分钟前
STL - vector的使用和模拟实现
开发语言·c++
机器视觉知识推荐、就业指导38 分钟前
C++中的栈(Stack)和堆(Heap)
c++
MavenTalk44 分钟前
Move开发语言在区块链的开发与应用
开发语言·python·rust·区块链·solidity·move