我正在用这一行回顾一些Java代码
if ( list.size() == 1 || list.size() <= 4) {...}
我评论说,我认为这样做与之前没有什么不同
if (list.size() <= 4) {...}
他说这很重要,需要首先。我不明白也许如果是这样的话
if (list.size() == 1 || list.size() <= someVeryCostlyFunction() ) {...}
并且如果someVeryCostlyFunction()总是返回一些大于等于1的正数,则通常大多数情况下两者都可能是1。我们应该检查效率。
最佳答案
具有以下两个条件的代码smells:
if (list.size() == 1 || list.size() <= 4)
也许作者想到了这一点:
如果列表中元素的数量等于或小于4。
即使列表中有零个元素,当前代码也可以满足条件,这很可能是错误的。
此条件的另一个问题是使用magic number 4?
它有什么重要意义?为什么不是
5
?它应该自我记录,并与代码中可能出现的其他4个区别:
int MAX_HANDLED = 4;
if ( list.size() > 0 && list.size() <= MAX_HANDLED )
:
:
int ALL_TIRES = 4;
if (car.getTires() < ALL_TIRES) {
car.stop();
}
至于性能,我看不出有什么明显的理由可以使现有条件比您提出的条件要快(即使
list.size > 1
时,第二个条件也要快)。参见与此相似的question。