【问题标题】:JavaScript Coding Style: curly brace after multiline condition [closed]JavaScript编码风格:多行条件后的大括号[关闭]
【发布时间】:2014-02-08 16:27:10
【问题描述】:

在我的公司项目中,JavaScript 中的花括号总是在“if”条件之后位于同一行。 考虑下一个例子中的多行条件,你认为“list[i].Position++;”行的缩进吗?看起来好吗?我觉得有点奇怪,因为在视觉上它和条件行有相同的缩进。

for (var i = 0; i < list.length; i++) {
    if (list[i].Position < previousPosition &&
        list[i].Position >= savedPosition) {
        list[i].Position++;
    }
}

你会用这段代码做一些关于编码风格的事情吗?

【问题讨论】:

  • 我个人会将list[i].Position++; 缩进一个制表位,因为我认为这样更具可读性,但这完全是个人意见。
  • 有时像这样的事情我会考虑将条件移动到括号下方的自己的行中,并在新行上关闭括号并将大括号与右括号放在同一行。

标签: javascript coding-style


【解决方案1】:

缩进无关紧要,但我会阅读 list.length 一次,而不是每次迭代。

for (var i = 0,L=list.length; i < L; i++)

【讨论】:

  • 这是一个很好的收获!它不适合我的口味,但它肯定会快一点。谢谢!
【解决方案2】:

是的,我会用这个做点什么。我不会说问题出在牙套上。 多行条件难以阅读,我建议将其拉出到单独的函数中。

function isRightPosition(position, previous, saved) {
    return position < previous
         && position >= saved;
}

for (var i = 0; i < list.length; i++) {
    if(isRightPosition(list[i].Position, previous, saved))
        list[i].Position++;
}

您还可以进一步确定 if 的主体,以防止与条件混淆。

for (var i = 0; i < list.length; i++) {
    if (list[i].Position < previousPosition &&
        list[i].Position >= savedPosition) {
            list[i].Position++;
    }
}

您还可以移动与号,这有时会有所帮助:

for (var i = 0; i < list.length; i++) {
    if (list[i].Position < previousPosition
        && list[i].Position >= savedPosition) {
            list[i].Position++;
    }
}

这都是个人意见。做你认为最好的(或一致的)。

【讨论】:

  • 我有 2 个稍微不同的条件,根据我的口味,为它们创建 2 个函数有点过头了。不过谢谢你的建议!
  • @JoeSmith 我认为很多人没有创建足够的函数。函数名称通常比某些条件更能说明意图。对我来说,阅读“if”和“is right position”之类的英语单词肯定比试图弄清楚条件意味着什么更容易。
猜你喜欢
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 2023-03-06
  • 2011-08-05
  • 2019-10-12
  • 2015-09-26
相关资源
最近更新 更多