这个方法:
boolean containsSmiley(String s) {
if (s == null) {
return false;
}
else {
return s.contains(":)");
}
}
Run Code Online (Sandbox Code Playgroud)
可以等同地写成:
boolean containsSmiley(String s) {
if (s == null) {
return false;
}
return s.contains(":)");
}
Run Code Online (Sandbox Code Playgroud)
根据我的经验,第二种形式更常见,特别是在更复杂的方法中(可能有几个这样的退出点),"throw"和"return"也是如此.然而,第一种形式可以说使代码的条件结构更加明确.有什么理由比较喜欢一个吗?
(相关:一个函数应该只有一个return语句吗?)
鉴于以下代码片段,是否有任何明显的差异?
public boolean foo(int input) {
if(input > 10) {
doStuff();
return true;
}
if(input == 0) {
doOtherStuff();
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
与
public boolean foo(int input) {
if(input > 10) {
doStuff();
return true;
} else if(input == 0) {
doOtherStuff();
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
或者使用这段代码,单退出原则会更好吗?
public boolean foo(int input) {
boolean toBeReturned = false;
if(input > 10) {
doStuff();
toBeReturned = true;
} else if(input == 0) {
doOtherStuff();
toBeReturned …Run Code Online (Sandbox Code Playgroud)