c++ - 如何处理 11000 行 C++ 源文件?

标签 c++ version-control legacy-code anti-patterns

所以我们的项目中有这个巨大的(11000 行大吗?)mainmodule.cpp 源文件,每次我必须触摸它时,我都会畏缩。

由于这个文件如此中心和大,它不断积累越来越多的代码,我想不出一个好的方法让它真正开始缩小。

该文件在我们产品的多个 (> 10) 维护版本中使用并积极更改,因此很难重构它。如果我要“简单地”将其拆分为 3 个文件,那么从维护版本合并回更改将成为一场噩梦。此外,如果您拆分具有如此悠久和丰富历史的文件,跟踪和检查 SCC 中的旧更改历史突然变得更加艰难。

该文件基本上包含了我们程序的“主类”(主要的内部工作调度和协调),所以每次添加一个特性,它也会影响这个文件,每次增长。 :-(

在这种情况下你会怎么做?关于如何将新功能移动到单独的源文件而不弄乱 SCC 的任何想法工作流程?

(关于工具的注意事项:我们使用 C++ 和 Visual Studio ;我们使用 AccuRev 作为 SCC 但我认为 SCC 的类型在这里并不重要;我们使用 Araxis Merge 来做实际的比较和合并文件)

最佳答案

合并不会像将来获得 30000 LOC 文件那样成为一场噩梦。所以:

  1. 停止向该文件添加更多代码。
  2. 拆分它。

如果您不能在重构过程中停止编码,您可以将这个大文件 按原样 保留一段时间,至少不向其中添加更多代码:因为它包含一个“主类”您可以从它继承,并将具有重载函数的继承类保存在几个新的小而设计良好的文件中。

关于c++ - 如何处理 11000 行 C++ 源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3615789/

相关文章:

svn - 在颠覆中,我想恢复到一个修订版,然后逐步执行每个修订版以查看它在哪里损坏

git - 如何与团队共享 .env

version-control - Fossil SCM - 恢复到特定版本,如 Mercurial

javascript - 如何找到导致非自愿路由的代码段? (在旧网站中)

unit-testing - 您如何使用遗留代码实现测试驱动开发?

c++ - 将 C++ 库编译成框架?

c++ - zlib 的压缩函数没有做任何事情。为什么?

c++ - 范围 10^18 的大模算法?

c++ - gcc constexpr 解释为内联?