减少cpp文件中包含的数量

时间:2014-04-15 18:29:23

标签: c++

我目前在cpp文件中有大约50个或更多包含。我想知道组织这种情况的最佳政策是什么。我应该继续添加更多包含吗?或者我应该采取另一种方法?如果是这样的话应该是什么?

3 个答案:

答案 0 :(得分:5)

1)将每个文件的范围限制为一个类,或限制为一组具有相关行为的相关类。

如果你的cpp文件只有400到1000行代码,那么要求几十个包含就很难了。

此外,当您移动并进行修改时,请重新评估每个文件中包含的标头。如果您最初使用向量实现某些内容,但随后切换到set,请考虑删除#include<矢量>

2)在头文件中,使用前向声明,将这些包含移动到cpp文件。

这不直接解决您的问题,但它与管理编译时有关。如果您可以在头文件中使用前向声明,请执行此操作。

如果a.h包含b.h而b.h包含c.h,则每当c.h发生更改时,包括a.h在内的任何内容都必须重新编译。将这些包含移动到.cpp文件(通常不是#included)将限制这些级联更改。

让我们重新评估如果a.h正向声明在b.h中定义的类,a.cp​​p包含b.h,以及b.h正向声明在c.h中定义的类,并且b.cpp包含c.h。

当c.h发生变化时,b.cpp需要重新编译,但a.cpp很好。

3)在扩展功能时重新组织。

编写代码可能是这样的:

  1. 计划实施功能。
  2. 编写代码以支持该计划。 (如果进行单元测试,请考虑先编写测试)
  3. 调试并确保代码符合您的要求。
  4. 但是缺少一些可以产生巨大影响的步骤。

    1. 重构您的代码,并删除多余的包含。 (这是单元测试有用的地方。)
    2. 再次调试。
    3. 这最后两个步骤可能涉及将大型函数拆分为几个较小的函数,打破类,以及(与此问题相关)为已扩展其当前编译单元的功能创建新文件。

      如果你继续前进,你的代码似乎工作,并且不花一点时间来整理它,相当于一个木匠将腿锤在桌子上,但从不花一点时间来打磨和抛光结果。有时候可以买一块带有一些腿的胶合板,但是如果你想要一张漂亮的餐桌,你会发现这种方法不能胜任。


      没有简单的方法来减少cpp文件的包含,最终那些包括需要存在于某处(前提是依赖于那些包含的原始代码仍然存在,如果不存在,则只需删除无关的包含),以及.cpp文件比.h文件更好。但是,通过精心管理和组织,您可以维护更小,更模块化的源代码。这最终是你如何防止事情变得不可行。

答案 1 :(得分:2)

将cpp文件拆分为各种较小的cpp文件。如果无法以减少每个生成的cpp文件需要包含的文件数量的方式完成此操作,请重构您的应用程序。在重构时,要特别注意S - SOLID原则的一部分:“......每个班级都应该承担一个责任”。

答案 2 :(得分:1)

浏览标题列表并删除该编译单元中不需要的所有内容。如果您只需要指向类的指针,则没有理由包含该类的完整标题。

如果清理后仍然有这么多标题,那么可能适合分解你.cpp - 文件,特别是如果你可以找出不同的类集群和/或函数执行不同的工作(可能需要相同的标题子集)。

无需走极端,但将数千行放入您唯一的源文件中是模块化不良的标志。