if (a > b) {
return true;
}
return false;
与上面的代码的Netbeans给"Redundant if statement"
警告,建议其更改为:冗余如果声明警告
return a > b;
我想到的第一个版本是更容易阅读和喜欢我的代码中使用它。我想知道与建议的相比是否存在任何缺点。
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;
你推的a
和b
值在堆栈上,然后在弹出的价值观和这些值推>
结果到堆栈的情况。然后弹出该值并返回。
所以
return a > b;
是不知不觉在字节代码级别更有效。
(IMO我找到第二个更具可读性,我相信大多数人会了。)
我也更喜欢第二个版本的可读性---你的+1 ...... – 2014-12-01 17:00:55
这里的效率是无关紧要的,或者很可能一旦JIT编译器完成它就不存在了。 “我们应该忘记小效率,大约97%的时间” - Donald Knuth – 2014-12-01 17:29:13
w/@DavidConrad同意:不要担心javac或JIT编译器的工作,更重要的是:不要教新程序员去做。如果你的代码要慢一些,首先进行高层次的概述,然后测量,然后进行优化。 – 2015-06-26 12:38:00
从编译器的角度来看,您的代码确实包含了一些额外的计算。需要为布尔值分配内存(即返回)并执行a> b计算。 A> b返回布尔值,所以如果你返回它很容易。 虽然他们都有相同的逻辑。
请参阅David Conrads的评论。 – 2015-06-26 12:38:48
我觉得是可读性,我更建议代码在NetBeans。您可能想比较两个版本生成的.class。我认为他们会根据同一套指令进行优化。 – 2014-12-01 16:56:01
我会发现这样的警告很烦人。在上面的简单情况下,第二种形式可能会更好,但是更复杂一些,第一种可能会被认为更具可读性。 – 2014-12-01 17:02:28
我更喜欢后者的版本,但你应该可以设置你的偏好。如果Netbeans没有这个选项,你应该提出功能请求。 – 2014-12-01 17:27:02