返回语句的Java最佳样式 - 条件内部或外部?

时间:2014-09-23 19:23:10

标签: java if-statement coding-style refactoring return

有没有更好的方法来编写下面的代码?我检查一个对象是否为null,如果是,则返回false,否则我检查另一个变量并根据它选择做什么。

private boolean myFunction(MyObjectType myObject) {
  if (myObject == null) {
    return false;
  } else if (myInstanceVariable.myMethod()) {
    // Do something then return
    System.out.println(myObject.getSomeValue());
    return true;
  } else {
    return false;
  }
}

最好使用最后的else语句,或者在if语句之外移动return false(以及我可能在最终的else { }块中放置的任何其他代码)吗?我可以看到将它移到外面更安全(并且代码行更少),因此该函数100%保证返回。它可能取决于编译器的行为方式吗?

private boolean myFunction(MyObjectType myObject) {
  if (myObject == null) {
    ...
  } else if (myVariable.myMethod()) {
    ...
  }
  return false;
}

2 个答案:

答案 0 :(得分:0)

最后在if语句之外使用最后一个return语句会更好。 最后我还记得,如果你的所有回报都在if语句中,你将得到编译错误,说明方法没有返回或者可能不会总是达到回报。

答案 1 :(得分:0)

对我来说,这样更好:

private boolean myFunction(MyObjectType myObject) {
  if (myObject == null) {
    return false;
  }
  if (myInstanceVariable.myMethod()) {
    // Do something then return
    System.out.println(myObject.getSomeValue());
    return true;
  }
  return false;
}

如果您从if区域内返回,则不需要else阻止。我发现它更好,因为逻辑的真正复杂性可以通过这种不那么复杂的方法得到更好的表达。更少的支撑和更少的缩进使其更容易理解,至少对我而言。