方法错误代码中有很多 returns 吗?

Are many returns in method bad code?

我正在尝试尽可能优化和编写最好的代码(就像任何开发人员一样),并且我一直在绞尽脑汁想弄清楚我正在编写的这个特定方法是否是糟糕的代码。出于某种原因,我发现有多个 return 语句与只有一个语句相比是不好的。然而,我没有任何可靠的书面说明这是不好的。请告诉我这是不是错误代码

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 语句是一种很好的做法。支持这一点的一些理由:

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

一些赞成使用多个 return 编写的论点:您编写代码的速度更快一些,您不使用局部变量来保存 return 值直到最终退出点,您避免跳出循环(以防您需要到达 return 语句),或者如果没有跳出,则增强循环条件以将 return 值也作为退出条件的一部分考虑。

就个人而言,我会通过使用 来压缩布尔逻辑来减少冗余,但您的代码通常是可以接受的。

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;
}