可以返回和else语句在CFScript中可以互换使用吗?

时间:2011-01-07 19:46:36

标签: scripting coldfusion coldfusion-9

我想知道您对在CFScript中交替使用returnelse语句的看法。我通常使用以下语法:

if (something) {
  // Do something
}
else {
  // Do something else
}

最近我发现我可以这样做:

if (something) {
  // Do something
  return;
}
// Do something else

这两种风格会产生不同的最终结果吗?我不喜欢在else语句中包装代码。我的想法是,如果if语句计算为true并返回,则它下面的代码将不会运行。如果它不评估为true,那么它下面的代码将运行,无论它是否包含在else语句中。

这听起来不错吗?

2 个答案:

答案 0 :(得分:4)

像大多数语言一样,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);
    }
  }
}

在第一种情况下,我可以看到所有将在列表中应用的验证,我可以将其全部放在前面,这让我可以专注于例程的实际内容。在第二种情况下,我将例程的实质部分深埋在ifs的嵌套部分中,当我需要在验证中添加另一条规则时,代码结构变得更加复杂。

答案 1 :(得分:2)

两种写入方式将返回相同的结果,但为了便于阅读,首选方式