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

标签 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);
}

最佳答案

我想你想要的是Chain of responsibility - Pattern 。 您需要一个“函数”:String -> String 和一个包含这些函数的列表。评估器将调用其中的每一个,如果成功,它不会调用其余的 - 这也是您的示例中的内容。

术语“函数”可以是 Java 8 函数接口(interface)、Google Guava 函数接口(interface)中的任何内容,或者只是一个专门的 functional interface喜欢

public interface {
  String doAction(String parameterS);
}

在将评估器与它应该尝试的“函数”/“操作”一起使用之前,您需要对其进行配置。 这可能就像将它们添加到列表中一样简单,但您可能也想将其提取到一个单独的类中。

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

关于java - 有没有办法消除 Java 中早期方法返回的冗余检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21649751/

相关文章:

python - 帮我简化这段代码(Python)

git - 在 Visual Studio 中格式化(4 个空格)所有代码文件?

java - 如何将 Spring MVC 重定向到类似 url 的 {...}

java - 进行提取方法重构后,代码变慢了 6 倍

javascript - 这个漂亮的小 jQuery 代码似乎不起作用.. 任何人都知道为什么?

refactoring - 重构遗留代码的质量保证

java - 如何在本地格式化 Jenkinsfile?

java - “Cannot find symbol”或 “Cannot resolve symbol”错误是什么意思?

java - Maven找不到本地安装的原型(prototype)

java - MYSQL特殊字符问题