Java 方法中有很多返回错误代码吗?

Java 方法中有很多返回错误代码吗?,java,coding-style,Java,Coding Style,我正在尝试优化和编写尽可能最好的代码(就像任何开发人员一样),我一直在绞尽脑汁试图弄清楚我正在编写的这个特定方法是否是糟糕的代码。出于某种原因,我发现有多个返回语句比只有一个返回语句更糟糕。然而,我没有确凿的文字说明这是不好的。请告诉我这是不是坏代码 public boolean fooBar(int foo, int bar){ if(foo == 3) { return true; } if(bar == 3) { return true; }

我正在尝试优化和编写尽可能最好的代码(就像任何开发人员一样),我一直在绞尽脑汁试图弄清楚我正在编写的这个特定方法是否是糟糕的代码。出于某种原因,我发现有多个返回语句比只有一个返回语句更糟糕。然而,我没有确凿的文字说明这是不好的。请告诉我这是不是坏代码

public boolean fooBar(int foo, int bar){
   if(foo == 3) {
     return true;
   }

   if(bar == 3) {
     return true;
   }

   System.out.println("foo or bar is not equal to three");
   return false;
}

我不是在寻求简化,我只是在寻找关于这是否是错误代码以及这样做是否会导致性能问题的一般想法。

一般来说,每个方法都有一个返回语句是一种很好的做法。支持这一点的一些理由:

  • 您的方法中有一个清晰的流程,因为您不必跟踪多个出口点
  • 源于前一个,一个清晰的流程意味着一个更可测试的方法。您的单元测试可以很容易地跟踪和检查代码中的不同流,这将导致单点退出
  • 它更易于维护

一些支持使用多个返回编写的参数:您编写代码的速度要快一点,不使用局部变量将返回值保留到最终退出点,避免中断循环(以防需要到达return语句),或者如果nor中断,增强循环条件也考虑返回值作为退出准则的一部分。

< P>个人,我将通过缩减布尔逻辑来减少冗余,但是您的代码通常是可接受的。
public boolean fooBar(int foo, int bar) {
    if (foo == 3 || bar == 3) {
        return true;
    }
    System.out.println("foo or bar is not equal to three");
    return false;
}

在执行方面,我认为这是一件好事。如果您的条件满足,那么它将返回,无需执行其他代码。但我可能错了:有些老年人喜欢在底部只有一个返回语句,因为这是某些语言中唯一允许的事情(不记得是哪一种),但现在这确实是一个意见问题。例如,对于递归的基本情况,我肯定会在顶部有一些返回语句。代码完整的引用很好。@keyser我66岁了,所以我可能算是“老人”。我在Java中使用多重返回,但在许多其他允许它们的语言中不使用。不同之处在于Java已经尝试过了。例如,如果我需要调试来强制在每个返回路径上发生某些事情,我可以不重写整个方法就完成它。@PatriciaShanahan这是一个很好的观点。