将包含指令合并到一个文件中是否是一种好的做法
Is it a good practice to merge include directives in one file
我认为一切都在标题中。
假设我们有一个具有此结构的项目:
+ src
main.cpp
task1.cpp
task2.cpp
+ includes
main.h
task1.h
task2.h
task1.h
和task2.h
都使用<QPushButton>
和<QLabel>
。
创建一个其他头文件 ( core.h
) 并将其包含放入
// core.h
#include <QPushButton>
#include <QLabel>
然后从每个task1.h
和task2.h
文件中调用它。
以这种方式执行此操作时是否可以注意到任何更改(编译时间,编程限制...
只有在使用"预编译头"时才会这样做。否则就没有多大意义了。
- 尽可能使用前向声明。
- 在需要类型完整声明的文件中添加包含。
使用放置所有包含文件的头文件会使生成系统无法跟踪已更改文件的依赖项。突然间,所有代码都依赖于core.h
标头。如果更改了此标头,则必须重新编译所有代码,即使没有实际更改也是如此。
IMO 核心标头是很好的做法:
- 对于小型项目;
- 如果您将它们限制为包含很少更改的内容。
core.h
不能很好地扩展到中型或大型项目。这种方法有几个问题:
- 当一切都依赖于这个文件中的所有内容时,很难分析或管理依赖关系;
- 每当该标头中的任何内容发生变化时,所有内容都将重新编译;
- 程序员没有考虑东西真正属于哪里,而是不断将东西转储到这个文件中;
- 每个编译单元的命名空间都被该文件中的所有内容污染。
相关文章:
- 将错误返回给调用方而不是立即在 C++ 中抛出错误是否是一种好的做法
- 将相同共享指针的副本存储在不同的向量中是否是一种好的做法?
- 使用类在C++中存储和列出变量/方法是否是一种好的做法
- 如果 C 函数仍然可以间接执行(通过回调函数),那么将它声明为静态函数是否是一种不好的做法?
- 从 std::string 到 std::array<char,size> 的 memcopy 额外数据是否是一种未定义的行为?
- 在类方法中使用 "this" 指针是否是一种好的做法?
- 派生类是单例是否是一种好的做法
- 即使在多任务处理时,添加用户时间 + 系统时间(来自 shell 的时间命令)是否是一种可靠的措施?
- 为许多类可能需要的所有常量变量制作独立的头文件是否是一种很好的做法?
- 移动 l 值参考参数是否是一种不好的做法?
- 返回对私有向量成员元素的非常量引用是否是一种不好的做法
- 禁止模板虚拟功能是否是一种不必要的谨慎
- 从 r 值引用限定方法返回 r 值引用是否是一种好的做法?
- C++ - 在类中包含不是类对象属性的变量是否是一种不好的做法
- 如果要调用多个成员函数,对象编辑器是否是一种好方法?
- 使用模板重载现有函数是否是一种不好的做法
- 在编译时检查模板参数是否是一种字符串
- 使用此"shortcutting function"是否是一种好的做法?
- 在无效函数中使用退出来纠正错误是否是一种好的做法
- 在声明中省略参数名称是否是一种好的做法