方法不好代码中的许多回报



我试图优化并编写最佳代码(如任何开发人员),我一直在努力弄清楚我写的这个特定方法是否是不好的代码。由于某种原因,我发现有多个返回陈述不好,而不是只有一个。但是,我没有扎实地表明这是不好的。请告诉我这是否是不良代码

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

我不是在寻找简化的,我只是在寻找一般的想法,即是否是不良的代码,是否有这样的性能问题。

通常,每个方法都有一个返回语句。支持这一点的一些原因:

  • 您的方法中有清晰的流动,因为您不必追踪多个出口点。
  • 源自前一个,清晰的流程意味着一种更可检验的方法。您的单元测试可以轻松地遵循并检查代码中的不同流,这会导致出口单点;
  • 它更可维护;

一些参数以多个返回为有利于写作:您将代码编写得更快,您不会使用本地变量将返回值保持在返回值之前,直到最终出口点,您避免脱离循环(如果您需要达到返回语句),或者如果也不突破,则可以增强循环条件,也将返回值视为退出条件的一部分。

就个人而言,我会通过将布尔逻辑凝结来减少冗余,但您的代码通常可以接受。

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

最新更新