我们应用程序的源代码有几十万行,几千个文件,而且有些地方很老——这个应用程序最初是在 1995 年或 1996 年编写的。在过去的几年里,我的团队已经大大提高了源代码的质量,但是仍然有一个问题特别困扰我:许多类在其头文件中完全定义了许多方法。
在某些情况下,我对在标头中内联声明的方法没有任何问题 - 结构的构造函数,内联可显着提高速度的简单方法(我们有一些像这样的数学函数)等。但是内联方法的自由使用并不明显原因是:
- 凌乱
- 很难找到方法的实现(尤其是在类树中搜索虚函数,只发现一个类在标题中声明了它的版本......)
- 可能会增加编译后的代码大小
- 可能会导致我们的链接器出现问题,这对于大型代码库来说是出了名的不稳定。说句公道话,在过去的几年里它变得更好了,但并不完美。
最后一个原因现在可能给我们带来了问题,这是一个很好的理由去检查代码库并将大多数定义移动到源文件中。
我们的代码库很大。 有没有一个自动化工具可以为我们做(大部分)这件事?
笔记:
- 我们使用Embarcadero RAD Studio 2010。也就是说,C++的方言包括VCL和其他扩展等。
- 一些标头是独立的,但大多数都与相应的 .cpp 文件配对,就像您通常那样。除了扩展名之外,文件名是相同的,即,如果在 Xh 中定义了方法,则可以将它们移动到 X.cpp。这也意味着该工具不必处理整个项目的解析——它可能只解析单独的 .cpp/.h 文件对,忽略包含等,只要它能够可靠地识别定义了主体的方法在类声明中并移动它。