我想知道您对使用的看法 returnelse 语句在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的嵌套部分中,何时我需要在验证中添加另一个规则,即代码结构变得更加复杂。

其他提示

两种写作方式将返回相同的结果,但是对于可读性,首先是第一种方法

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top