2014-02-08 30 views
3

在我公司的项目中,JavaScript中的花括号始终在“if”条件之后处于同一行。 考虑下一个例子中的多行条件,你认为行“list [i] .Position ++;”的缩进看起来好吗?看起来有点奇怪,因为它在视觉上与条件线具有相同的缩进。JavaScript编码风格:多线条件后的大括号

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

+0

有时候,我会考虑将条件移入括号下面的自己的行,然后在新行上关闭括号,并在与关闭括号相同的行上使用大括号。 –

回答

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

你也可以意图进一步的身体,以防止与条件混淆。

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

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

+0

我有2个稍微不同的条件,使他们的2个功能是一点矫枉过正,为我的口味。但是,谢谢你的建议! – Aremyst

+0

@JoeSmith我认为很多人没有创建足够的功能。函数名称通常比一些条件更多地表达意图。对我来说,阅读英文单词如'如果'和'是正确的位置'比试图解决条件*意味着什么更容易。 –

0

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

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

这是一个很好的接收!这对我的口味来说不够可读,但它肯定快一点。谢谢! – Aremyst