从处理或优化的角度来看,哪2个更好?
我觉得选项1更具可读性,但我被告知选项2更有效率。是这样吗?
if (value != null) {
if (value.equalsIgnoreCase(ApplicationConstants.A)) {
} else if (value.equalsIgnoreCase(ApplicationConstants.B)) {
}
}
选项2:
if ((value != null) && (value.equalsIgnoreCase(ApplicationConstants.A))) {
} else if ((value != null) && (value.equalsIgnoreCase(ApplicationConstants.B))) {
}
答案 0 :(得分:8)
这里没有什么可以关心性能,编写代码使其具有可读性。
当性能测试稍后突出显示需要优化的区域时,只会优化需要它的位置。
为了使其更具可读性,您可以反转您的测试以摆脱空检查:
if (ApplicationConstants.A.equalsIgnoreCase(value)) {
} else if (ApplicationConstants.B.equalsIgnoreCase(value)) {
}
答案 1 :(得分:2)
Option 1
效率很高,因为没有多余的null
支票。
答案 2 :(得分:0)
我希望第一个更有效率,因为&&
是短路的,所以无论如何它都会提供多个条件分支。但是,如果你想确定,请计算时间。
答案 3 :(得分:0)
我会选择选项1,如同选项2一样,更多的是没有进行比较。
答案 4 :(得分:0)
第一个选项更好,因为您可以决定一个条件检查。 所以如果value!= null则只有它会进入else,它甚至不会进入条件块。 但在第二个选项中,它将检查条件是否为false,如果为false,则检查其他条件(对于值== null)。