有没有办法删除Java中早期方法返回的冗余检查?

时间:2014-02-08 18:03:48

标签: java refactoring code-formatting

这些年来,我已经多次看到过这种代码模式。它是不断检查某个标准的过程,如果满足该标准,该方法会提前退出。有没有办法重构此代码以删除一些冗余检查,以便您不必持续检查每个支持方法的响应?

例如:

public String process(String s) {
    String revised = doActionA(s);
    if (checkCriteria(revised)) return revised;

    revised = doActionB(revised);
    if (checkCriteria(revised)) return revised;

    return doActionC(revised);
}

1 个答案:

答案 0 :(得分:2)

我认为你想要的是Chain of responsibility - Pattern。 你需要一个'Function':String -> String和一个包含那些函数的List。评估员会调用其中的每一个,如果成功,它将不会调用剩余的 - 这也是你的例子中的内容。

术语“功能”可以是Java 8功能接口,Google Guava功能接口或只是专门的functional interface之类的

public interface {
  String doAction(String parameterS);
}

您需要先配置评估程序,然后再使用它应该尝试的“功能”/“操作”。 这可能就像将它们添加到列表一样简单,但您可能也想将其提取到单独的类中。

如果您想要一些示例,我认为Google会为您提供大量示例。

相关问题