现代C++软件架构:方法与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.7.6 DRY原则

DRY是don’t repeat yourself(别重复你自己)的缩写,这意味着应该避免代码重复,尽可能重用代码。也就是说,当代码重复多次类似操作时,应该提取一个函数或函数模板。此外,与其创建几种类似的类型,不如考虑创建一个模板。

同样重要的是,不要重复别人的工作。现在有很多编写得很好且成熟的库,可以帮助我们更快地编写高质量的软件。特别是下面这些:

❑Boost C++库(https://www.boost.org/)。

❑Facebook的Folly(https://github.com/facebook/folly)。

❑Electronic Arts的EASTL(https://github.com/electronicarts/EASTL)。

❑Bloomberg的BDE(https://github.com/bloomberg/bde)。

❑Google的Abseil(https://abseil.io/)。

❑Awesome Cpp列表(https://github.com/fffaraz/awesome-cpp)。

然而,有时重复的代码也有其好处,比如开发微服务时。当然,在单个微服务中遵循D RY原则总是一个好主意,但是对于在多个服务中使用的代码,违反D RY原则实际上是值得的。无论我们谈论的是建模实体还是逻辑,当允许代码重复时,维护多个服务都会更容易。

假设有多个微服务重用了同一个实体的代码。突然,其中一个服务需要修改一个字段。所有其他服务现在也必须进行修改。任何对公共代码的依赖都是如此,会有几十个甚至更多的微服务因为与它们无关的更新而需要修改。因此,在多个微服务间使用重复代码通常更容易维护。

既然我们谈到了依赖关系和代码维护,那么我们继续讨论一个与此密切相关的主题。