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