我正在用这行代码检查一些 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)
也许作者也有这样的想法:
if there is some number of elements in the list that is 4 or less.
即使列表有零个元素,当前代码也允许满足条件 - 这很可能是错误的。
这种情况的另一个问题是使用 magic number 4?
它有何重要意义?为什么它不是 5
?
它应该是 self 记录的,并与代码中可能出现的其他 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也有类似的担忧。
关于java - 我不明白其中的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40514867/