JavaScript 编码风格:多行条件语句后大括号放在哪里?

3
在我的公司项目中,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++;
    }
}

你会针对这段代码中的编码风格做些什么吗?

1
我个人会再缩进一次 list[i].Position++;,因为我认为这样更易读,但这完全是个人意见。 - jfriend00
有时候对于这种情况,我会考虑将条件移到括号下面的一行,并在新行上关闭括号,然后将花括号放在与关闭括号同一行。 - Paul S.
2个回答

2
缩进无关紧要,但是我会在迭代时仅读取一次列表长度而不是每次迭代都读取。
for (var i = 0,L=list.length; i < L; i++)

这是一个不错的发现!虽然对我来说不够易读,但肯定会更快一些。谢谢! - Aremyst

1

是的,我会对此进行处理。但我不认为问题在于括号。 多行条件很难阅读,建议将其拆分为独立函数。

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++;
    }
}

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


我有两个略微不同的条件,为它们编写两个函数有点过度设计了,这不符合我的口味。但还是感谢您的建议! - Aremyst
@JoeSmith 我认为很多人不够创建函数。函数名通常比某些条件更能表达意图。对我来说,阅读英语单词如“if”和“is right position”肯定比试图弄清楚条件的含义容易得多。 - Alexander R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接