[英]Why is there a need for javascript coding conventions?
假設我必須編寫一個 javascript 函數:
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);
}
有更多的空白,我知道這個規則,但我不知道它是如何工作的,或者我可以從中受益什么?
編碼風格的好處是增強了可讀性。 你決定堅持哪種風格並不重要,只要你堅持統一的風格,並且能在可讀性上與你的同事達成一致,這並不總是那么容易。
什么是好的風格是一個見仁見智的問題,但一般來說,選擇一些風格並在整個代碼中始終如一地遵循它會使閱讀更容易(對其他人和您以后再看時)。
根據我的經驗,大多數人發現使用額外空格更容易閱讀代碼,如第二個示例所示。
我不喜歡在function
和()
之間放置空格。 或者,如果有函數名稱,我不會在名稱和括號之間添加空格: function someName()
。
另請注意,使用具有語法突出顯示功能的現代代碼編輯器(如 Stack Overflow 那樣),閱讀沒有空格的代碼比過去容易得多。 比較以下兩個:
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);
}
這些編碼約定適用於人類,它們提高了可讀性。 假設我寫了一個這樣的表達式:
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;
}
如果你不遵循這些指導方針,並且所有團隊成員在某些約定上都不同意,那么長時間維護一個大項目將是非常困難的。
最后請注意,這些約定不是針對編譯器的,而是針對人類的。 這就是為什么它被稱為編碼指南,而不是語言語法。
可能你應該閱讀更多關於 javascript 閉包的內容,你可以遵循“Google Javascript Style Guide” 。
在編碼時遵循一些統一的風格指南可以使代碼更易於閱讀並幫助您編寫漂亮的代碼,並幫助其他人理解(並喜歡!)您的代碼。
可以肯定的是,網絡上有大量資源(只需通過谷歌搜索一段時間,您就會獲得一些 javascript 指南或指南),但這個非常簡單、簡單和完整:
這不是規則。 這只是編碼約定風格。 如果你不想,你不需要跟隨。 但是這種風格可以使您的代碼更具可讀性、更易於維護和更干凈。 對我來說,我更喜歡有空格而不是窄字母。 再說一遍,這不是規則。
編碼風格總是非常個人化; 一個人喜歡壓縮代碼,以便他們可以在一個屏幕上看到盡可能多的內容,另一個人需要在單獨的一行中打開和關閉大括號,等等。
當只為自己編碼時,你應該選擇最適合你的。 但是,當您開始在團隊中工作並且其他人必須維護您的代碼時,反之亦然,就一種編碼風格達成一致變得很重要……這可能很難。
我參加了編碼風格的討論,他們非常不舒服,因為你放棄了一些個人偏好,盡管是為了更大的利益。 在短暫的不適之后,您會習慣的 ;-)
第二個版本與第一個版本不同,因為它聲明了一個內部的“sum”變量,除非 Javascript 沒有按照它在錫上所說的那樣做。
恕我直言,額外的空白行沒有任何貢獻,但我可能不會因為它們而死。 然而,同樣有效的問題是下載速度,該建議使下載速度變得更糟。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.