可以在CFScript中互换返回且否则语句吗?
-
08-10-2019 - |
题
我想知道您对使用的看法 return
和 else
语句在CFScript中互换。我通常使用以下语法:
if (something) {
// Do something
}
else {
// Do something else
}
最近,我可以做到这一点:
if (something) {
// Do something
return;
}
// Do something else
这两种样式会产生不同的最终结果吗?我喜欢不必将代码包装在 else
陈述。我的想法是,如果 if
语句评估true和返回,下面的代码将无法运行。如果它不评估正确,那么下面的代码将运行,无论它是否包裹在 else
是否声明。
听起来对吗?
解决方案
像大多数语言一样,ColdFusion都提供了许多完成同一件事的方法。程序员的工作是为这种情况选择正确的工作。当然,“正确”可以有很多解释,但我想说正确的方法是清晰,简洁和可扩展的。
在这种情况下,没有真正的性能或“代码行”差异。但是,我的眼睛不清楚使用返回以完全不同的代码分支,因为(再次,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);
}
}
}
在第一种情况下,我可以看到将在列表中应用的所有验证,并且可以将其全部挡在前面,这使我可以专注于例程的真实实质。在第二种情况下,我将常规的大部分埋在IF的嵌套部分中,何时我需要在验证中添加另一个规则,即代码结构变得更加复杂。
其他提示
两种写作方式将返回相同的结果,但是对于可读性,首先是第一种方法
不隶属于 StackOverflow