您的问题分为两部分,首先是关于语句的行为,然后是关于您是否应该这样做;请允许我向您展示有多少程序员会解决第二个问题。
想象一下,星期六早上 4.30 点,你挂了,这段代码中有一个错误,你需要在接下来的 30 分钟内修复它,否则你的工作/业务将面临风险。
if (a ? b ? c : d : false)
或者
if (a) {
if (b)
return c;
else
return d;
} else {
return false;
}
或者
if (!a)
return false;
if (!b)
return d;
return c;
或者
if (a)
return b ? c : d;
else
return false;
哪个是正确的选择?
- 编辑 -
使用单字母变量名,它看起来很无辜。所以,一些真正的变量名:
if (application.config.usingUTCTimezone ? system.environment.biosTimezoneIsUTC ? haveNTPServerConfigured : system.time.clockIsSynchronized : false)
或者
if (application.config.usingUTCTimezone ?
system.environment.biosTimezoneIsUTC ?
haveNTPServerConfigured : system.time.clockIsSynchronized
: false)
或者
if (application.config.usingUTCTimezone) {
if (system.environment.biosTimezoneIsUTC)
return haveNTPServerConfigured;
else
return system.time.clockIsSynchronized;
} else {
return false;
}
或者
if (!application.config.usingUTCTimezone)
return false;
if (!system.environment.biosTimezoneIsUTC)
return system.time.clockIsSynchronized;
return haveNTPServerConfigured;
或者
if (application.config.usingUTCTimezone)
return system.environment.biosTimezoneIsUTC ? haveNTPServerConfigured : system.time.clockIsSynchronized;
else
return false;