15個簡單的JS編碼標(biāo)準(zhǔn)讓你的代碼更整潔
編碼標(biāo)準(zhǔn)可以幫助以下方面:
- 保持代碼一致
- 易于閱讀和理解
- 易于維護
下面的編碼標(biāo)準(zhǔn)是我對上述幾點有幫助的看法。
1. 比較時使用 === 代替 ==
這很重要,因為JavaScript是一種動態(tài)語言,因此使用==可能會給您帶來意想不到的結(jié)果,因為它允許類型不同。
Fail:
- if (val == 2)
Pass:
- if (val === 2)
2. 永遠(yuǎn)不要使用 var,使用 let 來代替
使用 let 將有助于避免 JavaScript 中各種 var 引起的作用域問題。
Fail:
- var myVar = 10;
Pass:
- let myVar = 10;
3. 使用 const 代替 let
這阻止了開發(fā)人員嘗試更改不應(yīng)該做的事情,并且確實有助于提高可讀性。
Fail:
- let VAT_PERCENT = 20;
Pass:
- const VAT_PERCENT = 20;
4. 始終使用分號(;)
盡管這在 JavaScript 中是可選的,并不像其它語言一樣需要分號作為語句終止符。但是使用 ; 有助于使代碼保持一致。
Fail:
- const VAT_PERCENT = 20;
- let amount = 10
- return addVat(amount, vatPercent)
Pass:
- const vatPercent = 20;
- let amount = 10;
- return addVat(amount, vatPercent);
5. JavaScript中的命名約定
- let 應(yīng)該使用駝峰命名。
- const 如果在文件的頂部使用大寫的蛇形命名法。如果不在文件頂部,請使用駝峰命名。
- class 應(yīng)該是帕斯卡命名法:MyClass
- functions 函數(shù)應(yīng)該是駝峰命名法:myFunction
6. 拼接字符串時使用模板字符串
模板字符串中允許嵌入表達(dá)式。
Fail:
- let fullName = firstName + " " + lastName;
Pass:
- let fullName = `${firstName} ${lastName}`;
7. 盡可能使用ES6箭頭函數(shù)
箭頭函數(shù)是編寫函數(shù)表達(dá)式的更簡潔的語法。
Fail:
- var multiply = function(a, b) {
- return a* b;
- };
Pass:
- const multiply = (a, b) => { return a * b};
8. 始終在控制結(jié)構(gòu)周圍使用大括號
所有控制結(jié)構(gòu)都必須使用花括號(例如,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();
- }
9. 確保大括號從同一行開始,中間有空格
Fail:
- if (myNumber === 0)
- {
- doSomething();
- }
Pass:
- if (myNumber === 0) {
- doSomething();
- }
10. 嘗試減少嵌套
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);
通過上面的示例可以看出,減少嵌套之后,會變得容易閱讀。
11. 盡可能使用默認(rèn)參數(shù)
在 JavaScript 中,如果你在調(diào)用函數(shù)時沒有傳遞參數(shù),則它的值就是 undefined
Fail:
- myFunction(a, b) {
- return a + b;
- }
Pass:
- myFunction(a = 0, b = 0) {
- return a + b;
- }
12. `Switch` 語句應(yīng)使用 `break` 并具有 `default`
我通常會嘗試不使用 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;
- }
13. 不要使用通配符導(dǎo)入
Fail:
- import * as Foo from './Foo';
Pass:
- import Foo from './Foo';
14. 使用布爾值的快捷方式
Fail:
- if (isValid === true)
- if (isValid === false)
Pass:
- if (isValid)
- if (!isValid)
15. 嘗試避免不必要的三元語句
Fail:
- const boo = a ? a : b;
Pass:
- const boo = a || b;
總結(jié)
任何語言的編碼標(biāo)準(zhǔn)都可以真正幫助提高應(yīng)用程序的可讀性和可維護性。如果你在團隊中工作,那么一件很難的事情就是強制執(zhí)行編碼標(biāo)準(zhǔn)。這里有一些建議可以幫助你:
- 代碼審查,逐行Pass代碼。
- 整理或使用某種代碼分析器
- 創(chuàng)建新內(nèi)容時,讓你們的一位高級開發(fā)人員初始化,其他開發(fā)人員可以使用該代碼作為指導(dǎo)。