java应该用两个if语句分隔和吗?
我的代码中有以下几行:
if (command.equals("sort") && args.length == 2) {
//run some program
}
有人建议我应该使用两个独立的if
语句,因为如果命令不等于“sort”,则无需计算任何其他if
语句, 无论args长度是否正确
因此,我需要将代码重写为:
if (command.equals("sort")) {
if (args.length == 2) {
//run some program
}
}
我知道他们都做这项工作,但我的问题是哪一个更好、更高效
# 1 楼答案
他们是一样的。对于第一个示例,如果第一个表达式为false,任何现代运行时都会忽略第二个表达式
# 2 楼答案
如果条件的顺序相同,它们的效率就完全相同
如果有命令就会退出。squals(“sort”)返回false和args。长度永远不会被检查。这是
&&
操作符的short-circuit
操作归根结底是风格和可读性的问题。在我看来,当你开始在一个
if
语句中将太多的内容链接在一起时,它可能会变得很难阅读# 3 楼答案
不,那不是真的。他们称之为
short circuit
,如果第一个条件的计算结果为false,那么第二个条件将根本不被计算# 4 楼答案
如上所述,短路会导致程序在条件失败时退出if语句,这意味着不会对任何进一步的条件进行评估,因此两种格式的评估方式没有实际差异
我想指出的是,当几个if语句嵌套在一起时,代码的易读性会受到负面影响,对我来说,这是不嵌套的主要原因。例如:
它比:
想象一下,有20个嵌套的if语句?当然,这不常见,但也有可能