我正在使用此行查看一些Java代码
if ( list.size() == 1 || list.size() <= 4) {...}
我评论说,我看不出这与做什么有什么不同
if (list.size() <= 4) {...}
他说这很重要,需要成为第一个。我不明白。也许如果它像那样
if (list.size() == 1 || list.size() <= someVeryCostlyFunction() ) {...}
如果someVeryCostlyFunction()总是返回一些正数&gt; = 1,那么大多数时候你可以使用这两个大小,大小是预期的1.否则我看不出差异。我们应该检查效率。
答案 0 :(得分: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。