据我所知,以下方法也是如此,但哪种变体更好,为什么?
public boolean method() {
if (condition) {
return otherMethod();
} else {
return true;
}
}
或
public boolean method() {
if (condition) {
return otherMethod();
}
return true;
}
或者这可能是更好的变种?
public boolean method() {
return condition ? otherMethod() : true;
}
答案 0 :(得分:5)
我对此有一个非常强烈的意见,即在这种情况下使用else
块是一种糟糕的风格。
一旦逻辑变得足够复杂,使用else
将极大地妨碍可读性。
例如:
if (cond1)
then return
else
// Do some processing
if (cond2)
then return
else
// Do some processing
if (cond3)
....
所以你最终得到一个深层嵌套的结构,这完全没必要,因为它等同于:
if (cond1)
then return
// Do some processing
if (cond2)
then return
// Do some processing
if (cond3)
....
答案 1 :(得分:1)
答案 2 :(得分:1)
我更喜欢第二种选择。
这是我为自己使用的一些理由:
1)减少嵌套代码并降低代码复杂性。
2)允许提前退货:
public boolean isValidUser(User user) {
if (user == null) {
return false;
}
String details = getUserDetails(user);
if (details == null) {
return false;
}
...
return true
}
VS
public boolean isValidUser(User user) {
if (user == null) {
return false;
} else {
String details = getUserDetails(user);
if (details == null) {
return false;
} else {
...
return true;
}
}
}
答案 3 :(得分:0)
绝对一样。它只是一种不同的风格。采用你喜欢的那个。
就个人而言,我通常更喜欢第二种选择,因为如果代码非常长,则不会在块中缩进。从我的角度来看,它更具可读性。
想象
public boolean myFunction() {
if (test) {
return true;
}
...
...
...
...
// Very long code
return false;
}
而不是
public boolean myFunction() {
if (test) {
return true;
} else {
...
...
...
...
// Very long code
return false;
}
}