一个头文件中的多个类与每个类一个头文件

新手上路,请多包涵

无论出于何种原因,我们公司都有一个编码指南,其中规定:

Each class shall have it's own header and implementation file.

因此,如果我们编写一个名为 MyString 的类,我们将需要关联的 MyStringh.hMyString.cxx

还有其他人这样做吗?有没有人看到任何编译性能的影响? 10000 个文件中的 5000 个类的编译速度是否与 2500 个文件中的 5000 个类一样快?如果不是,差异是否明显?

[我们编写 C++ 代码并使用 GCC 3.4.4 作为我们的日常编译器]

原文由 Mike Baker 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2k
2 个回答

这里的术语是 翻译单元,您真的希望(如果可能)每个翻译单元有一个类,即每个 .cpp 文件一个类实现,并具有相应的同名 .h 文件。

以这种方式做事通常更有效(从编译/链接的角度来看),特别是如果您正在做诸如增量链接之类的事情。这个想法是,翻译单元是孤立的,这样,当一个翻译单元发生变化时,你不必重建很多东西,如果你开始将许多抽象集中到一个翻译单元中,你就必须这样做。

此外,您会发现许多错误/诊断是通过文件名报告的(“Myclass.cpp 中的错误,第 22 行”),如果文件和类之间存在一对一的对应关系,它会有所帮助。 (或者我想您可以将其称为 2 对 1 对应)。

原文由 user2189331 发布,翻译遵循 CC BY-SA 2.5 许可协议

两个字:奥卡姆剃刀。每个文件保留一个类,并将相应的标题保存在单独的文件中。如果您不这样做,例如为每个文件保留一个功能,那么您必须创建关于什么构成功能的各种规则。通过为每个文件保留一个类可以获得更多收益。而且,即使是像样的工具也可以处理大量文件。保持简单,我的朋友。

原文由 nul operator 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题