减少代码调用公共类的代码重复

时间:2014-04-13 20:25:53

标签: c++ class code-duplication

我有一个'A'级,几乎完全符合我的需要。 “B”类使用“A”类

我现在设计了Class'C'和Class'D',并注意到'B'类中有很多代码,'C'和'D'用于使用类'A'是重复的。我已经在每个类的特定独立函数中分离出这段代码。

现在我想知道这段代码应该去哪里。目前,函数在三个调用类(B,C和D)中重复。

将功能放入“A”类会破坏单一责任原则。添加功能的继承可能会破坏SRP和LSP。

似乎可能有用的是构图。

问:设计一个完整的类只是为了几个函数而不是kill?

问:对于'B','C'和'D'类,是否有效访问新类'E'(取决于A)和旧类'A'(必须是否与新类'E'中的实例相同,或者新类'E'是否应提供足够的功能,以便类B,C和D不需要直接访问A类?它似乎是一个带有附加功能的不完整界面。

或者新类'E'应该做什么并将结果返回到B,C,D类,然后他们可以将它们传递给'A'类。实际上,不,那个,因为类必须在某些返回值上再次调用,所以无法工作。

或者我应该以完全不同的方式做到这一点?

(为什么软件设计需要这么多思考?)

示例使用场景:

B类:while((A-> DoSomething()== ERROR / TIMEOUT / etc)&&(retries< 3)){retries ++; A-> SetSomeParameters(); }

(实际代码更大)

1 个答案:

答案 0 :(得分:0)

如果代码如此重复是(a)大(ish),(b)可能会与所有使用类的步调一致,因此(c)冒着分开创建新错误的风险,我' d去创建一个包含该功能的(隐藏)类,并根据需要继承它。

无论如何,请仔细考虑成本与收益。添加一个版本的函数会产生刚性,可能需要在以后删除(再次拆分)。 "现在就开始工作,可能稍后会用到"通常情况下,为了以后创造额外的工作(Murphy的法律绝对是无情的)。整体架构比可能重复的细节更重要。