Where to put the doxygen comment blocks for an internal library - in H or in CPP files?

The common sense tells that the Doxygen comment blocks have to be put in the header files where the classes, structs, enums, functions, declarations are. I agree that this is a sound argument for a libraries that are mean to be distributed without its source (only headers and libs with object code).

BUT...I've been thinking of the exact opposite approach when I'm developing an internal to the company (or as a side project for myself) library that will be used with its full source code. What I propose is to put the large comment blocks in the implementations files (HPP, INL, CPP, etc) in order NOT to clutter the inteface of the classes and functions declared in the header.

Pros:

  • Less clutter in the header files, only categorizing of the functions can be added.
  • The comment blocks that are previewed when Intellisense for example is used doesn't clash - this is a defect that I have observed when I have a comment block for a function in the .H file and have its inline definition in the same .H file but included from .INL file.

Cons:

  • (The obvious one) The comment blocks are not in the header files where the declarations are.

So, what do you think and possibly suggest?

57210 次浏览

标题: 更容易阅读的评论,因为有较少的其他“噪音”时,看文件。

来源: 然后,在查看注释时就可以阅读实际的函数。

我们只使用标题中注释的所有全局函数和源代码中注释的本地函数。如果需要,您还可以包含 copiddoc 命令,以便在多个位置插入文档,而不必多次编写(对于维护更好)

You could however also get the results copied over to different file documentation with a simple command. E.g. :-

我的档案

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

我的档案1.c

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

现在您可以获得关于这两个函数的相同文档。

这样可以减少代码文件中的噪音,同时可以在最终输出中的几个位置显示在一个位置上编写的文档。

通常我把接口(param,return)的文档放在。H 文件和实施的文档(详细信息)。转交。Cpp/.M 档案。Dox 将函数/方法文档中的所有内容进行分组。

我把所有东西都放在头文件里了。

我记录了所有内容,但通常只提取公共接口。

在标题中包含注释意味着,如果注释发生更改,则必须重新编译类的所有用户。对于一个大型项目来说,如果程序员冒险花费20分钟重建所有东西,他们将不太愿意更新头部的注释。

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

把文档放在人们可以阅读和编写的地方,因为他们正在使用和编写代码。

Class comments go in front of classes, method comments in front of methods.

这是确保维护的最好方法。它还使您的头文件相对精简,并避免了人们更新方法文档的 touching问题,从而导致头文件变脏并触发重新构建。我实际上知道人们用它作为编写文档 回见!的借口

我喜欢利用这样一个事实,即姓名可以在多个地方进行记录。

在头文件中,我写了一个方法的简短描述,并记录了它的所有参数——这些参数比方法本身的实现更不可能改变,如果它们改变了,那么无论如何都需要改变函数原型。

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

例如:

我的模块

/// @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;
}

我在用 QtCreator 编程。一个非常有用的技巧包括 Ctrl-Click on a function or method 以获得头文件中的声明。

当该方法在头文件中被注释时,可以快速找到要查找的信息。因此,对我来说,注释应该位于头文件!

在 c + + 中,有时候实现可以在头和。Cpp 模块。在这里,将文档放到头文件中似乎更为简单,因为头文件是保证所有公共函数和方法的唯一位置。