gpt4 book ai didi

c++ - 处理相似代码的优雅方式

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:28 26 4
gpt4 key购买 nike

我有一个运行良好的软件项目。现在,必须调整该项目以模拟一个新的但相关的系统。有什么策略可以使这两个代码井井有条?他们将拥有大约 90% 相同的代码库,但有许多功能需要稍作调整。

我想到了以下几点:

  1. git-repository 中的不同分支:两个项目的完美控制,但必须分别在每个分支中进行公共(public)更改。
  2. 通过 C++ 编译指示(#ifdef Project1 ...)对不同的程序模式进行建模:这会将更改保留在本地,但会使代码难以阅读。

我对这些解决方案不太满意。有没有更好的方法?

最佳答案

我们有同样的问题,这是我们如何解决的:

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

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

但是,您必须小心每个配置中的 not so far 代码。例如,在不同的特定文件中使用相似(但不相同)的代码,可能的错误只能在一种配置中得到纠正。可以通过将一些代码定义为公共(public)模板或重新考虑设计以将某些部分放在公共(public)模板中来减少它

希望回答对你有帮助

关于c++ - 处理相似代码的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36203530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com