有没有办法让两个功能保持同步?

时间:2014-07-02 16:07:00

标签: java function coding-style

我有两个函数AB。它们做同样的事情,除了其中一个在更细粒度的层次上做。我需要确保他们永远做同样的逻辑,也就是说,如果一个函数的功能发生变化,那么另一个函数也应该改变。

最好的解决方案(我认为)是制作一般功能和特定功能。然后有一个函数调用另一个。但是,在这种情况下,它需要太多的代码重构,并且为了论证,假设它是不可能的。

是否有一种机制允许我说,当此代码中的任何内容更改时,请确保提醒用户查看其他功能?

编辑#1 @Charles Wood :我正在寻找一种机制来对源代码执行此检测(带注释或其他内容。)但实现相同目标的替代方案也很好。

2 个答案:

答案 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)

作为问题中概述的解决方案的替代方案,我将执行以下操作:

  • 编写一个单元测试,在两个函数上使用相同的数据,以确保它们产生相同的结果。
  • 评论这两个功能并说“嘿,看看其他功能如果你改变这个功能。”

但这仍然不完美。如果为一个函数引入了新功能,它可能不一定会破坏单元测试,新作者可能不会阅读我的评论,告诉他们查看其他函数。

相关问题