if..else vs if(){return}

时间:2011-08-03 18:06:21

标签: javascript

在下面的例子中 - 假设返回值没有任何重要性 - 是否有理由更喜欢任何一种方法而不是另一种方法?

// Method 1
function (a, b) {
  if (a == b){
    // I'm just interested in
    // the stuff happening here
  } else {
    // or here
  }
return true;
}

// Method 2
function (a, b) {
  if (a == b){
    // I'm just interested in
    // the stuff happening here
    return true;
  }
  // or here
  return true;
}

6 个答案:

答案 0 :(得分:5)

似乎最佳实践(主要是我工作过的地方)是在方法或函数的顶部设置默认值,并且只在某些条件发生时才更改这些值。因此,不需要使用else,因此方法2是优选的。

由于该示例是JavaScript,因此需要特别注意代码大小。因此,方法2将为相同的功能创建更少的代码,从而将其参数作为首选。

但是,如果您有超过2个可能的条件,否则否则无法避免。但是,在这些情况下,我工作的大多数地方都更喜欢Switch Case。

答案 1 :(得分:3)

我更喜欢方法1,因为它不会让人感到困惑。此外,重复代码较少。

答案 2 :(得分:3)

我的决定是基于代码清晰度和可读性,即:

  • 如果需要在if-block之后在块中执行更多操作,请选择方法1。
  • 当您只需要两个代码块时,选择方法2,然后更清楚地阅读
  • 如果您明确认为您的读者在没有“其他”字样的情况下无法理解您的神秘代码,请再次选择方法1;当块变得大于几行时,这种情况很常见。

今天的许多程序员认为更少的缩进更容易阅读,我同意。在这种情况下,一般偏好应该使用第二种方法。

答案 3 :(得分:0)

我会推荐方法1,因为它更具可读性和自我记录。

答案 4 :(得分:0)

这里的可读性实际上取决于函数的作用。

如果此函数总是返回true,那么我更喜欢方法1 很明显,因为它只返回一个地方,很容易看出它总是如此。

在上述情况下,方法2更令人困惑。它在多个地方返回,因此更加混乱。考虑一个开发人员不必要地遍历可能的分支,然后看看它们如何影响返回值。在这个简单的例子中,它没有那么重要,但是当你得到更精细的条件时,我真的会避免这种方法。

如果if块中的代码很少,我只会使用方法2。比如可以处理边缘情况的东西。

希望有所帮助。

答案 5 :(得分:0)

任何现代浏览器的解释器都应该消除任何方向的任何性能优势。

有几个原因,方法1是优选的,尚未提及。单点退出使得任何未来的修改都需要两个分支共同的操作更容易并且不太可能有错误(因为作者错过了早期返回。同样,在某些情况下,通过提供一个共同的位置,它使调试更容易设置断点或警报()。