将包含指令合并到一个文件中是否是一种好的做法

Is it a good practice to merge include directives in one file

本文关键字:是否是 一种 一个 指令 包含 合并 文件      更新时间:2023-10-16

我认为一切都在标题中。

假设我们有一个具有此结构的项目:

+ src
    main.cpp
    task1.cpp
    task2.cpp
+ includes
    main.h
    task1.h
    task2.h

task1.htask2.h都使用<QPushButton><QLabel>

创建一个其他头文件 ( core.h ) 并将其包含放入

// core.h
#include <QPushButton>
#include <QLabel>

然后从每个task1.htask2.h文件中调用它。

以这种方式执行此操作时是否可以注意到任何更改(编译时间,编程限制...

只有在使用"预编译头"时才会这样做。否则就没有多大意义了。

  • 尽可能使用前向声明。
  • 在需要类型完整声明的文件中添加包含。

使用放置所有包含文件的头文件会使生成系统无法跟踪已更改文件的依赖项。突然间,所有代码都依赖于core.h标头。如果更改了此标头,则必须重新编译所有代码,即使没有实际更改也是如此。

IMO 核心标头是很好的做法:

  • 对于小型项目;
  • 如果您将它们限制为包含很少更改的内容。

core.h不能很好地扩展到中型或大型项目。这种方法有几个问题:

  • 当一切都依赖于这个文件中的所有内容时,很难分析或管理依赖关系;
  • 每当该标头中的任何内容发生变化时,所有内容都将重新编译;
  • 程序员没有考虑东西真正属于哪里,而是不断将东西转储到这个文件中;
  • 每个编译单元的命名空间都被该文件中的所有内容污染。
相关文章: