我想知道您对在CFScript中交替使用return
和else
语句的看法。我通常使用以下语法:
if (something) {
// Do something
}
else {
// Do something else
}
最近我发现我可以这样做:
if (something) {
// Do something
return;
}
// Do something else
这两种风格会产生不同的最终结果吗?我不喜欢在else
语句中包装代码。我的想法是,如果if
语句计算为true并返回,则它下面的代码将不会运行。如果它不评估为true,那么它下面的代码将运行,无论它是否包含在else
语句中。
这听起来不错吗?
答案 0 :(得分:4)
在这种情况下,没有真正的性能或“代码行”差异。对于完全不同的代码分支使用返回并不清楚,但是,由于无效条件,使用早期返回样式来保释函数(再次IMO)更清楚。请考虑以下情况:
if (not isdefined("url.param1")) {
return;
}
if (not len(url.param1)) {
return;
}
if (not refind("[0-9]+", url.param1)) {
return;
}
doSomethingToValid(url.param1);
与
if (isdefined("url.param1")) {
if (len(url.param1)) {
if (refind("[0-9]+", url.param1)) {
doSomethingToValid(url.param1);
}
}
}
在第一种情况下,我可以看到所有将在列表中应用的验证,我可以将其全部放在前面,这让我可以专注于例程的实际内容。在第二种情况下,我将例程的实质部分深埋在ifs的嵌套部分中,当我需要在验证中添加另一条规则时,代码结构变得更加复杂。
答案 1 :(得分:2)
两种写入方式将返回相同的结果,但为了便于阅读,首选方式