我有两个函数A
和B
。它们做同样的事情,除了其中一个在更细粒度的层次上做。我需要确保他们永远做同样的逻辑,也就是说,如果一个函数的功能发生变化,那么另一个函数也应该改变。
最好的解决方案(我认为)是制作一般功能和特定功能。然后有一个函数调用另一个。但是,在这种情况下,它需要太多的代码重构,并且为了论证,假设它是不可能的。
是否有一种机制允许我说,当此代码中的任何内容更改时,请确保提醒用户查看其他功能?
编辑#1 @Charles Wood :我正在寻找一种机制来对源代码执行此检测(带注释或其他内容。)但实现相同目标的替代方案也很好。
答案 0 :(得分:2)
这个怎么样?
class A {
public void func() {
/*some general logic, that you can change further*/
}
}
class B extends A {
@Override
public void func() {
super.func();
/*additional logic_1*/
}
}
class C extends A {
@Override
public void func() {
super.func();
/*additional logic_2*/
}
}
你可以像这样使用它:
A a1 = new B();
A a2 = new C();
答案 1 :(得分:-1)
作为问题中概述的解决方案的替代方案,我将执行以下操作:
但这仍然不完美。如果为一个函数引入了新功能,它可能不一定会破坏单元测试,新作者可能不会阅读我的评论,告诉他们查看其他函数。