編碼標(biāo)準(zhǔn)可以幫助以下方面:
保持代碼一致
易于閱讀和理解
易于維護(hù)
下面的編碼標(biāo)準(zhǔn)是我對(duì)上述幾點(diǎn)有幫助的看法太惠。
1. 比較時(shí)使用 === 代替 ==
這很重要,因?yàn)镴avaScript是一種動(dòng)態(tài)語(yǔ)言疲憋,因此使用==可能會(huì)給您帶來意想不到的結(jié)果凿渊,因?yàn)樗试S類型不同。
Fail:
if(val ==2)
Pass:
if(val ===2)
2. 永遠(yuǎn)不要使用 var缚柳,使用 let 來代替
使用let將有助于避免JavaScript中各種var引起的作用域問題埃脏。
Fail:
varmyVar =10;
Pass:
letmyVar =10;
在學(xué)習(xí)web前端的過程中,難免會(huì)遇到很多的問題秋忙,這些問題可能會(huì)困擾你許久彩掐,為此我有個(gè)web開發(fā)學(xué)習(xí)交流群(545667817),里面都是 掘金 的小伙伴灰追,并整理了一份最全面前端學(xué)習(xí)資料 ,從最基礎(chǔ)的HTML+CSS+JS 到移動(dòng)端HTML5的項(xiàng)目實(shí)戰(zhàn)的學(xué)習(xí)資料佩谷,想學(xué)習(xí)的都可以申請(qǐng)加入,大家互相學(xué)習(xí)监嗜,互相交流共同進(jìn)步谐檀,每日分享不同的學(xué)習(xí)資料!
3. 使用 const 代替 let
這阻止了開發(fā)人員嘗試更改不應(yīng)該做的事情裁奇,并且確實(shí)有助于提高可讀性桐猬。
Fail:
letVAT_PERCENT=20;
Pass:
constVAT_PERCENT =20;
4. 始終使用分號(hào)(;)
盡管這在JavaScript中是可選的,并不像其它語(yǔ)言一樣需要分號(hào)作為語(yǔ)句終止符刽肠。但是使用;有助于使代碼保持一致溃肪。
Fail:
constVAT_PERCENT =20;letamount =10returnaddVat(amount, vatPercent)
Pass:
constvatPercent =20;letamount =10;returnaddVat(amount, vatPercent);
5. JavaScript中的命名約定
let應(yīng)該使用駝峰命名免胃。
const如果在文件的頂部使用大寫的蛇形命名法。如果不在文件頂部惫撰,請(qǐng)使用駝峰命名羔沙。
class應(yīng)該是帕斯卡命名法:MyClass
functions函數(shù)應(yīng)該是駝峰命名法:myFunction
6. 拼接字符串時(shí)使用模板字符串
模板字符串中允許嵌入表達(dá)式。
Fail:
letfullName = firstName +" "+lastName;
Pass:
letfullName =`${firstName}${lastName}`;
7. 盡可能使用ES6箭頭函數(shù)
箭頭函數(shù)是編寫函數(shù)表達(dá)式的更簡(jiǎn)潔的語(yǔ)法厨钻。
Fail:
varmultiply =function(a, b){returna* b;};
Pass:
constmultiply =(a, b) =>{returna * b};
8. 始終在控制結(jié)構(gòu)周圍使用大括號(hào)
所有控制結(jié)構(gòu)都必須使用花括號(hào)(例如扼雏,if,else夯膀,for诗充,do,while等)诱建,這樣后期維護(hù)時(shí)蝴蜓,不容易出錯(cuò)。
Fail:
if(valid)doSomething();if(amount >100)doSomething();elseif(amount >200)doSomethingElse();
Pass:
if(valid) {doSomething();}if(amount >100) {doSomething();}elseif(amount >200) {doSomethingElse();}
9. 確保大括號(hào)從同一行開始俺猿,中間有空格
Fail:
if(myNumber ===0){doSomething();}
Pass:
if(myNumber ===0) {doSomething();}
10. 嘗試減少嵌套
if內(nèi)的if會(huì)變得混亂并且很難閱讀茎匠。有時(shí)你可能無法解決問題,但是可以好好卡看看代碼結(jié)構(gòu)押袍,看看是否可以改進(jìn)汽抚。
Fail:
if(myNumber >0) {if(myNumber >100) {if(!hasDiscountAlready) {returnaddDiscountPercent(0);? ? ? }else{returnaddDiscountPercent(10);? ? ? }? }elseif(myNumber >50) {if(hasDiscountAlready) {returnaddDiscountPercent(5);? ? }? }else{if(!hasDiscountAlready) {returnaddDiscountPercent(0);? ? }else{returnaddDiscountPercent(1);? ? }? }}else{error();}
Pass:
if(myNumber <=0) {returnerror;}if(!hasDiscountAlready) {returnaddDiscountPercent(0);}if(myNumber >100) {returnaddDiscountPercent(10);}if(myNumber >50) {returnaddDiscountPercent(5);}returnaddDiscountPercent(1);
通過上面的示例可以看出,減少嵌套之后伯病,會(huì)變得容易閱讀。
11. 盡可能使用默認(rèn)參數(shù)
在JavaScript中否过,如果你在調(diào)用函數(shù)時(shí)沒有傳遞參數(shù)午笛,則它的值就是undefined
Fail:
myFunction(a, b) {returna + b;}
Pass:
myFunction(a=0,b=0){returna+b;}
12.Switch語(yǔ)句應(yīng)使用break并具有default
我通常會(huì)嘗試不使用switch語(yǔ)句,但是你確實(shí)想使用它苗桂,請(qǐng)確保每個(gè)條件都break药磺,并寫了defalut。
Fail:
switch(myNumber){case10:? ? addDiscountPercent(0);case20:? ? addDiscountPercent(2);case30:? addDiscountPercent(3);}
Pass:
switch(myNumber){case10:? ? addDiscountPercent(0);break;case20:? ? addDiscountPercent(2);break;case30:? ? addDiscountPercent(3);break;default:? ? addDiscountPercent(0);break;}
13. 不要使用通配符導(dǎo)入
Fail:
import*asFoofrom'./Foo';
Pass:
importFoofrom'./Foo';
14. 使用布爾值的快捷方式
Fail:
if(isValid===true)if(isValid===false)
Pass:
if(isValid)if(!isValid)
15. 嘗試避免不必要的三元語(yǔ)句
Fail:
constboo = a ? a : b;
Pass:
const boo = a||b;
總結(jié)
任何語(yǔ)言的編碼標(biāo)準(zhǔn)都可以真正幫助提高應(yīng)用程序的可讀性和可維護(hù)性煤伟。如果你在團(tuán)隊(duì)中工作癌佩,那么一件很難的事情就是強(qiáng)制執(zhí)行編碼標(biāo)準(zhǔn)。這里有一些建議可以幫助你:
代碼審查便锨,逐行Pass代碼围辙。
整理或使用某種代碼分析器
創(chuàng)建新內(nèi)容時(shí),讓你們的一位高級(jí)開發(fā)人員初始化放案,其他開發(fā)人員可以使用該代碼作為指導(dǎo)姚建。
最后:
送給每一位前端小伙伴, 有想學(xué)習(xí)web前端的,或是轉(zhuǎn)行吱殉,或是大學(xué)生掸冤,還有工作中想提升自己能力的厘托,正在學(xué)習(xí)的小伙伴歡迎加入學(xué)習(xí)(545667817)。