理论讨论
我有一个带有接口和实现的代码库。让我们将实现称为implA分布在多个.h和.cpp文件中。现在,我需要接口的替代实现。但是98%的代码是相同的。现在存在多个选项。
选项1)根据一个标志对implA进行更改并更改代码,并且在某些标志下,与implB相关的更改才会生效。这很糟糕,因为我的代码将包含很多if and else,并且事情将变得混乱且难以理解。
选项2)我必须将整个implA复制粘贴到implB,然后在implB中进行更改。这样,两个接口是分开的,但随后是设计原则。不要重复自己。如果明天在implA中存在错误,我也将不得不记住并更改implB区域中的部分内容。
选项3)将公共区域带入某个类。在这两个impls中将其用作聚合。这似乎是可行的,但是当不需要触摸implA时,我也会更改implA。我不应该触摸不需要更改的文件和实现
请提出建议
答案 0 :(得分:0)
选项1-听起来像选项3,您不想更改implA。您不应该这样耦合代码,我们都知道如果/否则代码趋向于发展。
选项2-我认为这不会给您带来任何好处,因为正如您所说,每个修补程序或功能都必须在2个地方实现。
选项3-如果您可以使用implA的抽象部分来构建implB,这似乎是编写implB的较快方法,但是如果implA不够抽象而无法使用,那么我想在implA中做一些工作带来双重好处,因为它也将用于implB。
选项3听起来是最健壮和可扩展的选项。