2012-05-31 43 views
0

假設我有寫一個javscript功能:爲什麼需要javasctipt編碼約定或樣式?

function(){ 
    var a=1; 
    var sum=1; 
    for(var i=0;i<6;i++){ 
     sum=sum+a+1; 
    } 
    console.log(sum); 
} 

然而,有人建議寫這個函數是這樣的:

function() { 

    var a = 1; 
    var sum = 1; 
    for (var i = 0; i < 6; i++) { 
     var sum = sum + a +1; 
    } 
    console.log(sum); 

} 

更多的空白,我知道這條規則,但我也不怎麼它工作,還是我可以從中受益?

+2

它變得更容易閱讀。 –

+0

出於同樣的原因,您可以在句子末尾插入空格,並將文本塊分段。 –

+0

像奶油一樣,它是關於一致性的;無論您決定使用哪種編碼風格,保持一致通常比「正確」更好。例如,一致性非常重要,因爲它可以更輕鬆地閱讀大量代碼。除非你選擇一種難以閱讀的風格! – dash

回答

0

這是一個見仁見智什麼風格的問題,但在一般意義上採摘一些風格,始終貫穿您的代碼,當你回來給它後,它更容易閱讀(包括其他人,你跟隨它)。

在我的經驗,大多數人發現的代碼更易於使用多餘的空格改爲顯示在你的第二個例子。

我不喜歡把function()之間的空間。或者,在有函數名稱的地方,我不在名稱和括號之間留出空格:function someName()

還要注意與有語法高亮(喜歡堆棧溢出一樣),它比它曾經是讀不具有空間代碼更容易現代化的代碼編輯器。比較以下兩種:

for(var i=0;i<6;i++) 

for(var i=0;i<6;i++)

閱讀和編輯後,所有在黑色和白色,真的惹惱了我,但我不介意在任何地方各色版近之多。儘管如此,我仍然更喜歡它。

我會想辦法讓你的函數一些其他的變化:

function() { 
    var a = 1, 
     sum = 1, 
     i; 

    for(i = 0; i < 6; i++){ 
     sum += a + 1; 
    } 
    console.log(sum); 
} 
1

編碼風格的好處是增強了可讀性。只要你堅持統一的風格,並且可以同意你的同事的可讀性,這並不總是很重要,你決定堅持什麼樣的風格,這並不容易。

0

編碼之後,當一些風格統一的指導方針,使代碼更易於閱讀,並幫助你編寫漂亮的代碼,和其他人瞭解(和熱愛!)你的代碼。

可以肯定有對網絡資源的負載(僅通過谷歌搜索一會兒你會得到一些JavaScript指南或準則),但是這個人是很容易的,簡單的,完整的:

http://javascript.crockford.com/code.html

0

這不是一個規則。這只是編碼慣例風格。如果你不想要,你不需要關注。但是這種風格可以使你的代碼更具可讀性,更易於維護和更清潔。對我而言,我更喜歡有空間而不是狹窄的字母。再次,這不是一個規則。

0

編碼風格總是很個人化的;一個人喜歡濃縮的代碼,以便他們可以在一個屏幕上儘可能多地看到,另一個人需要在另一條線上的開啓和關閉支架等。

當只爲自己編碼時,應該選擇適合自己的最佳方法。但是當你開始在團隊中工作時,其他人必須維護你的代碼,反之亦然,就一種編碼風格達成一致至關重要......而這可能很難。

我已經坐在編碼風格的討論,他們非常不舒服,因爲你放棄了一些你的個人喜好,儘管爲了更大的利益。經過短暫的不適後,你會習慣它;-)

0

這些編碼約定是爲人類,他們增加可讀性。假設我寫了這樣一個表達式:

x=(a*b/2)+m-n+c*(d/e); 

它看起來笨拙,難以閱讀。這本來是比較容易理解,如果我們使用的運營商的空間是這樣的:

x = (a * b/2) + m - n + c * (d/e); 

再次使用空行分別是表示部分增加可讀性。例如:

function foo() { 
    var a; 
    var b; 
    // a blank line here to specify the end of variable declarations 
    if (some_cond) { 

    } else if (another_cond) { 

    } 
    // another blank line to specify end of some logic 
    //more codes here; 
} 

如果不遵守這些準則和所有團隊成員不以某種約定同意那麼這將是非常難以維持很長一段時間的一個大項目。

最後要注意的是,約定不適用於編譯器,它們是針對人類的。這就是爲什麼它被稱爲編碼準則,而不是語言語法。

0
  1. 第二個版本不等同於第一個版本,因爲它聲明瞭一個內部的'sum'變量,除非Javascript沒有做到它所說的那樣。

  2. 額外的空白行不提供任何更多的恕我直言,但我可能不會死在一個關於他們的溝。然而,同樣有效的問題是下載速度,這個建議使情況變得更糟。