做者 | Daniel Andersonjavascript
本文最初發佈於 Medium 網站,經原做者受權後翻譯和分享。java
下面的編碼標準是我對上述幾點有幫助的見解。git
這很重要,由於JavaScript是一種動態語言,所以使用==可能會給您帶來意想不到的結果,由於它容許類型不一樣。es6
Fail:github
if (val == 2)
複製代碼
Pass:web
if (val === 2)
複製代碼
使用 let
將有助於避免 JavaScript
中各類 var
引發的做用域問題。app
Fail:函數
var myVar = 10;
複製代碼
Pass:網站
let myVar = 10;
複製代碼
這阻止了開發人員嘗試更改不該該作的事情,而且確實有助於提升可讀性。編碼
Fail:
let VAT_PERCENT = 20;
複製代碼
Pass:
const VAT_PERCENT = 20;
複製代碼
儘管這在 JavaScript
中是可選的,並不像其它語言同樣須要分號做爲語句終止符。可是使用 ;
有助於使代碼保持一致。
Fail:
const VAT_PERCENT = 20;
let amount = 10
return addVat(amount, vatPercent)
複製代碼
Pass:
const vatPercent = 20;
let amount = 10;
return addVat(amount, vatPercent);
複製代碼
let
應該使用駝峯命名。
const
若是在文件的頂部使用大寫的蛇形命名法。若是不在文件頂部,請使用駝峯命名。
class
應該是帕斯卡命名法:MyClass
functions
函數應該是駝峯命名法:myFunction
模板字符串中容許嵌入表達式。
Fail:
let fullName = firstName + " " + lastName;
複製代碼
Pass:
let fullName = `${firstName} ${lastName}`;
複製代碼
箭頭函數是編寫函數表達式的更簡潔的語法。
Fail:
var multiply = function(a, b) {
return a* b;
};
複製代碼
Pass:
const multiply = (a, b) => { return a * b};
複製代碼
全部控制結構都必須使用花括號(例如,if
,else
,for
,do
,while
等),這樣後期維護時,不容易出錯。
Fail:
if (valid)
doSomething();
if (amount > 100)
doSomething();
else if(amount > 200)
doSomethingElse();
複製代碼
Pass:
if (valid) {
doSomething();
}
if (amount > 100) {
doSomething();
}
else if(amount > 200) {
doSomethingElse();
}
複製代碼
Fail:
if (myNumber === 0)
{
doSomething();
}
複製代碼
Pass:
if (myNumber === 0) {
doSomething();
}
複製代碼
if
內的 if
會變得混亂而且很難閱讀。有時你可能沒法解決問題,可是能夠好好卡看看代碼結構,看看是否能夠改進。
Fail:
if (myNumber > 0) {
if (myNumber > 100) {
if (!hasDiscountAlready) {
return addDiscountPercent(0);
} else {
return addDiscountPercent(10);
}
} else if (myNumber > 50) {
if (hasDiscountAlready) {
return addDiscountPercent(5);
}
} else {
if (!hasDiscountAlready) {
return addDiscountPercent(0);
} else {
return addDiscountPercent(1);
}
}
} else {
error();
}
複製代碼
Pass:
if (myNumber <= 0) {
return error;
}
if (!hasDiscountAlready) {
return addDiscountPercent(0);
}
if (myNumber > 100) {
return addDiscountPercent(10);
}
if (myNumber > 50) {
return addDiscountPercent(5);
}
return addDiscountPercent(1);
複製代碼
經過上面的示例能夠看出,減小嵌套以後,會變得容易閱讀。
在 JavaScript
中,若是你在調用函數時沒有傳遞參數,則它的值就是 undefined
Fail:
myFunction(a, b) {
return a + b;
}
複製代碼
Pass:
myFunction(a = 0, b = 0) {
return a + b;
}
複製代碼
我一般會嘗試不使用 switch
語句,可是你確實想使用它,請確保每一個條件都 break
,並寫了 defalut
。
Fail:
switch (myNumber)
{
case 10:
addDiscountPercent(0);
case 20:
addDiscountPercent(2);
case 30:
addDiscountPercent(3);
}
複製代碼
Pass:
switch (myNumber)
{
case 10:
addDiscountPercent(0);
break;
case 20:
addDiscountPercent(2);
break;
case 30:
addDiscountPercent(3);
break;
default:
addDiscountPercent(0);
break;
}
複製代碼
Fail:
import * as Foo from './Foo';
複製代碼
Pass:
import Foo from './Foo';
複製代碼
Fail:
if (isValid === true)
if (isValid === false)
複製代碼
Pass:
if (isValid)
if (!isValid)
複製代碼
Fail:
const boo = a ? a : b;
複製代碼
Pass:
const boo = a || b;
複製代碼
任何語言的編碼標準均可以真正幫助提升應用程序的可讀性和可維護性。若是你在團隊中工做,那麼一件很難的事情就是強制執行編碼標準。這裏有一些建議能夠幫助你:
原文連接: https://medium.com/javascript-in-plain-english/19-simple-javascript-coding-standards-to-keep-your-code-clean-7422d6f9bc0
好嘛,若是看到這裏,說明是真愛了。要不要給個人 Github 增長一個 star。
若有翻譯不當的地方,多多包涵,歡迎在評論區指正~