1

我想知道您对在 CFScript 中互换使用return和语句的看法。else我通常使用以下语法:

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

我最近突然想到我可以这样做:

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

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

听起来对吗?

4

2 回答 2

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 的嵌套部分中,当我需要添加另一个规则来验证代码结构变得更加复杂时。

于 2011-01-07T20:31:36.177 回答
2

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

于 2011-01-07T19:49:50.327 回答