【发布时间】:2016-07-12 05:46:51
【问题描述】:
我有一个运行良好的软件项目。 现在,必须调整该项目以模拟一个新的但相关的系统。 有什么策略可以使这两个代码井井有条? 它们的代码库大约 90% 相同,但有许多功能需要稍作调整。
我想到了以下几点:
- git-repository 中的不同分支:完美控制两个项目,但必须分别在每个分支中进行共同更改。
- 通过 C++ pragma (#ifdef Project1 ...) 对不同的程序模式进行建模: 这使更改保持在本地,但使代码难以阅读。
我对这些解决方案不太满意。有更好的方法吗?
【问题讨论】:
-
大量
#ifdefs 的替代方案是链接时间接缝。例如,您有一个在 Windows 上编译和链接到的 .cpp 文件,以及在 Linux 上编译和链接到的另一个文件。 -
如果差异适合定义明确的区域,您可以考虑定义接口并使用类来隐藏实现细节 - 有点像驱动程序,但这个概念可以更广泛地应用。
-
你有没有想过将所有常用代码移到静态库中。您的应用程序将调用函数/创建具有不同参数的对象。
标签: c++ git code-organization pragma