当前位置:  开发笔记 > 编程语言 > 正文

在哪里放置doxygen注释块用于内部库 - 在H或CPP文件中?

如何解决《在哪里放置doxygen注释块用于内部库-在H或CPP文件中?》经验,为你挑选了4个好方法。

常识告诉Doxygen注释块必须放在头文件中,其中包含类,结构,枚举,函数和声明.我同意这是一个合理的论据,这些库意味着在没有源的情况下进行分发(只有头和带有目标代码的库).

但是......当我正在开发一个公司内部(或者作为我自己的副项目)库时,我一直在考虑完全相反的方法,该库将与其完整的源代码一起使用.我建议将大的注释块放在实现文件(HPP,INL,CPP等)中,以免混乱标题中声明的类和函数的接口.

优点:

头文件中的杂乱性较小,只能添加功能分类.

使用Intellisense时预览的注释块不会发生冲突 - 这是我在.H文件中有一个函数的注释块并在同一.H文件中使用其内联定义时观察到的一个缺陷但包含在.INL文件中.

缺点:

(显而易见的一个)注释块不在声明所在的头文件中.

那么,您的想法和建议是什么?



1> Andy Dent..:

将文档放在人们将要阅读的地方,并在他们使用和编写代码时编写它.

类注释放在类前面,方法注释放在方法前面.

这是确保维护事物的最佳方法.它还可以使您的头文件保持相对精简,并避免人们更新方法文档时导致标题变脏并触发重建的触摸问题.我实际上已经知道人们将其作为后来编写文档的借口!


我有一个痛苦的提醒,为什么应该避免标题中的文档 - 高级副总裁告诉我将方法注释放在类声明中,发现自己实际上是为了以后保存注释编辑,因为点击这些标题会触发45分钟的构建时间!
使用Doxygen生成文档的关键是让生成的文档可访问.我们有一个内部Web服务器,其中Doxygen输出,然后我们可以在讨论中使用指向该服务器上的页面的链接.这也将类或方法文档与讨论更广泛设计问题的其他页面联系在一起.
不是低估,只是质疑:如果我想弄清楚API(甚至是内部API)的作用,我宁愿不必打开.cpp并浏览所有代码来查找文档.我承认如果你记录的不仅仅是客户对该方法正在做什么的看法(比如*它是怎么做的话),那将是一种痛苦,但你不应该这样做,对吧?

2> Daniel Buckm..:

我喜欢利用名称可以在多个地方记录的事实.

在头文件中,我写了一个方法的简短描述,并记录了它的所有参数 - 这些参数不太可能比方法本身的实现更改,如果它们这样做,那么在任何情况下都需要更改函数原型.

我将长格式文档放在实际实现旁边的源文件中,因此可以随着方法的发展更改细节.

例如:

mymodule.h

/// @brief This method adds two integers.
/// @param a First integer to add.
/// @param b Second integer to add.
/// @return The sum of both parameters.
int add(int a, int b);

mymodule.cpp

/// This method uses a little-known variant of integer addition known as
/// Sophocles' Scissors. It optimises the function's performance on many
/// platforms that we may or may not choose to target in the future.
/// @TODO make sure I implemented the algorithm correctly with some unit tests.
int add(int a, int b) {
  return b + a;
}


我喜欢这种方法,但它似乎与AUTOBRIEF不兼容.我很想知道是否有一个配置解决方法来消除生成的多个简报.

3> 小智..:

在标题中有注释意味着如果注释被更改,则必须重新编译类的所有用户.对于大型项目,编码人员如果冒险在接下来的20分钟内重建所有内容,则不太愿意更新标题中的评论.

并且..因为您应该阅读html文档而不是浏览文档的代码,所以注释块在源文件中更难找到并不是一个大问题.



4> eaanon01..:

标题: 更容易阅读评论,因为查看文件时其他"噪音"较少.

来源: 然后在查看评论时,您可以使用实际的功能进行阅读.

我们只使用在源代码中注释的头文件和本地函数中注释的所有全局函数.如果需要,还可以包含copydoc命令,将文档插入多个位置,而不必多次写入(更好的维护)

但是,您也可以使用简单的命令将结果复制到不同的文件文档中.例如: -

我的file1.h

/**
 * \brief Short about function
 *
 * More about function
 */
WORD my_fync1(BYTE*);

我的file1.c

/** \copydoc my_func1 */
WORD my_fync1(BYTE* data){/*code*/}

现在,您将获得有关这两个函数的相同文档.

这样可以减少代码文件中的噪音,同时将文档写入最终输出中多个位置的文档中.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有