减少cpp文件中包含的数量

Raj*_*war 2 c++

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

M2t*_*2tM 5

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

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

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

2)在头文件中,使用前向声明,将那些包括移动到cpp文件中.

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

如果啊包括bh和bh包含ch,每当ch改变时,包括ah在内的任何东西都必须重新编译.将这些包括移动到.cpp文件(通常不是#included)将限制这些级联更改.

让我们重新评估一下如果在bh中定义的前向声明类,并且a.cpp包含bh,并且如果在ch中定义了bh forward-declares类,并且b.cpp包含ch,则会发生什么

当ch改变时,b.cpp需要重新编译,但a.cpp很好.

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

编写代码可能会发生如下:

  1. 计划实施一项功能.
  2. 编写代码以支持该计划.(如果进行单元测试,请考虑先编写测试)
  3. 调试并确保代码符合您的要求.

但这缺少了一些可以产生巨大影响的步骤.

  1. 重构您的代码,并删除多余的包含.(这是单元测试有用的地方.)
  2. 再次调试.

最后两个步骤可能涉及将大型函数拆分为几个较小的函数,打破类,以及(与此问题相关)为已扩展其当前编译单元的功能创建新文件.

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


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