冗余 If 语句警告


if ( a > b) {
  return true;
}
return false;

使用上面的代码,Netbeans 会发出"Redundant if statement"警告,并建议将其更改为:

return a > b;

我认为第一个版本更容易阅读,并且更喜欢在我的代码中使用它。我想知道与建议的相比,它是否有任何缺点。

if ( a > b) {
  return true;
}
return false;

包括在堆栈上推送a的值,在堆栈上推送b的值,弹出两者并检查>的结果。如果是 true ,则将 true 的值推送到堆栈上,然后弹出并返回它。如果是 false ,则分支到字节码的更下方,将 false 的值推到堆栈上,弹出并返回。

在以下情况下:

return a > b;

您将 ab 的值推送到堆栈上,然后弹出这些值并将对这些值的>结果推送到堆栈上。然后弹出该值并返回它。

所以

return a > b;

字节码级别效率明显更高。

(IMO,我发现第二个更具可读性,我相信大多数人也会。

从编译器的角度来看,您的代码确实包含一些额外的计算。需要为布尔值(您正在返回)分配内存并进行>b 计算。A>b 返回布尔值,所以如果你返回它很容易。不过,它们在逻辑上都是一样的。

最新更新