2014-02-08 68 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