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

Java 有没有办法使两个功能保持同步?,java,function,coding-style,Java,Function,Coding Style,我有两个函数A和B。它们做同样的事情,只是其中一个做得更精细。我需要确保它们永远执行相同的逻辑,也就是说,如果一个函数的功能改变,那么另一个函数也应该改变 最好的解决方案(我认为)是创建一个通用函数和一个特定函数。然后让一个函数调用另一个函数。然而,在这种情况下,它将需要太多的代码重构,为了论证起见,假设这是不可能的 是否有一种机制允许我说,当代码签名中的任何内容发生更改时,请确保提醒用户查看其他函数 编辑#1@Charles Wood:我正在寻找一种机制来检测源代码(带有注释或其他内容),但实

我有两个函数
A
B
。它们做同样的事情,只是其中一个做得更精细。我需要确保它们永远执行相同的逻辑,也就是说,如果一个函数的功能改变,那么另一个函数也应该改变

最好的解决方案(我认为)是创建一个通用函数和一个特定函数。然后让一个函数调用另一个函数。然而,在这种情况下,它将需要太多的代码重构,为了论证起见,假设这是不可能的

是否有一种机制允许我说,当代码签名中的任何内容发生更改时,请确保提醒用户查看其他函数


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

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

  • 编写一个单元测试,在两个函数上使用相同的数据,以确保它们产生相同的结果
  • 注释这两个函数,并说“嘿,如果您更改了此函数,请查看此其他函数
但这仍然不是完美的。如果在一个函数中引入了新功能,它可能不一定会破坏单元测试,而且新作者可能不会阅读我的评论,告诉他们查看另一个函数。

这如何

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();

很可能,您可以通过一次编写并由两个函数调用的方式来抽象公共逻辑。然而,如果没有一个真实的例子,我们真的无能为力。除非我们能看到一个具体的例子,否则你的问题只能以非常笼统的方式回答。用注释强制执行这个想法是不可能的。你是对的,如果我输入特定的代码,有人可以给我一个特定的答案,但是如果没有代码,我仍然会提出一个合理的问题和两个解决方案。您还提供了有效/类似的解决方案。我认为社区可以按原样帮助解决这个问题。你是说在运行时对函数进行更改还是对源代码进行编辑?好的,我最初是说源代码。但我想,如果它可以在运行时在持续集成期间完成,或者做一些同样有效的事情。