c – 处理类似代码的优雅方式

我有一个工作得很好的软件项目.

现在,必须调整此项目以建模一个新的但相关的系统.

有哪些策略可以保持这两个代码组织良好?

它们的代码库大约相差90%,但有许多功能需要稍作调整.

我想到了以下几点:

> git-repository中的不同分支:完美控制两个项目,但必须分别在每个分支中进行常见的更改.
>通过C pragma(#ifdef Project1 …)建模不同的程序模式:
这使更改保持在本地,但使代码难以阅读.

我对这些解决方案并不满意.有更好的方法吗?

最佳答案 我们有同样的问题,这是我们如何解决它:

>我们的git repo只有一个分支
>除了常见文件,我们根据配置提供不同的文件:access_for_config1.cpp,access_for_config2.cpp,…
>我们使用工厂的设计模式来抽象共同部分的特定部分
>对于常见文件中的小特定部分,我们根据配置提供#ifdef部分
>根据每个配置,我们的makefile中有不同的规则:对于配置,我们编译公共文件特定文件并设置正确的标志.此外,在办公室使用eclipse时,我们还定义了不同的构建配置,以允许正确的突出显示.

这种方法的优点是保持公共部分始终同步,并且我们正确地隔离每个特定部分.

但是,你必须要小心每个配置中的代码.例如,在不同的特定文件中使用相似(但不相同)的代码,只能在一个配置中纠正可能的错误.可以通过将一些代码定义为通用模板或通过重新思考设计来使某些部分共同来减少它

希望它的答案会对你有所帮助

点赞