避免的常見JavaScript錯(cuò)誤的9個(gè)編碼指南
有一些非常常見的編程錯(cuò)誤是我們要避免的,以保持代碼的干凈和可讀性。
在本文中,我將研究它們以及如何避免它們。
一個(gè)函數(shù)中的東西太多
一個(gè)函數(shù)應(yīng)該只做一件事,這就是它自己所指示的。
如果有其他的東西,那么它應(yīng)該被移動(dòng)到它自己的函數(shù)中,在一個(gè)函數(shù)中有太多的東西會(huì)使閱讀和理解變得困難。
例如,如果有一個(gè)既可以計(jì)算小計(jì)又可以計(jì)算稅款的函數(shù),則由于它們是不同的,因此應(yīng)將其分為兩個(gè)單獨(dú)的函數(shù)。
注釋掉的代碼
注釋掉的代碼是不能運(yùn)行的代碼。因此,在我們完成代碼的這一部分之后,它們不應(yīng)該出現(xiàn)。
完成后,我們應(yīng)該刪除已注釋掉或取消注釋。
無(wú)論哪種方式,最終產(chǎn)品都不應(yīng)在其中注釋掉代碼。
非描述性的變量名
以不傳達(dá)其含義的方式命名變量,一旦我們忘記了自己寫的那段代碼,再回來(lái)看,就會(huì)讓讀者和我們自己感到沮喪。
因此,我們應(yīng)該使用描述變量名稱的變量來(lái)命名變量。
不要寫成 let x;,而是寫成像 let numApples 這樣的東西,這樣我們就知道我們的變量將持有蘋果的數(shù)量。
魔法數(shù)字和字符串
我們不應(yīng)該有魔術(shù)數(shù)字和字符串。這些值出現(xiàn)在多個(gè)值中,表示相同的東西,但在代碼中沒(méi)有明確解釋。
例如,如果我們有以下代碼:
- for (let i = 0; i < 10; i++) {
- ///...
- }
那我們不知道10代表什么。相反,我們應(yīng)該將其設(shè)置為命名常量,以便我們了解其含義。
例如,我們可以這樣寫:
- const numApples = 10;
- for (let i = 0; i < numApples; i++) {
- ///...
- }
現(xiàn)在我們知道10實(shí)際上意味著蘋果的數(shù)量。
凌亂的代碼格式
凌亂的代碼格式化會(huì)使代碼難以閱讀,因此我們應(yīng)該使用lint或代碼格式化程序?qū)ζ溥M(jìn)行清理。
那里有很多選擇,因此我們可以使用Prettier或ESLint這樣的工具自動(dòng)進(jìn)行整理。
硬編碼值
我們不應(yīng)該把值硬編碼到我們的代碼中,特別是當(dāng)它們是私密的時(shí)候。相反,我們應(yīng)該把它們作為環(huán)境變量,并從那里讀取所有的值。
有很多方法可以做到這一點(diǎn)。例如,對(duì)于前端,Angular,React和Vue都有保留變量的位置,以將變量保存在不同文件中的不同環(huán)境中。
對(duì)于后端,我們可以使用諸如 dotenv 包之類的東西從 .env 文件中讀取環(huán)境變量,這樣我們就不必對(duì)它們進(jìn)行硬編碼。
重復(fù)代碼
重復(fù)的代碼是不好的。如果我們改變一些重復(fù)的東西,就必須在所有重復(fù)的地方都要改變它們。
相反,我們應(yīng)該將公共部分移動(dòng)到它們自己的文件中,以便可以在多個(gè)地方使用它們。
不重復(fù)使用(DRY)原則適用于所有地方。如果我們完全照原樣復(fù)制和粘貼并使用它們,則應(yīng)將其移動(dòng)到共享位置。
不備份代碼
我們應(yīng)該使用Git管理代碼,以便我們可以為我們的代碼提供本地和遠(yuǎn)程存儲(chǔ)庫(kù)。
這樣,我們可以自動(dòng)將一個(gè)副本保留在遠(yuǎn)程位置。同樣,我們可以輕松地還原錯(cuò)誤代碼,并輕松地從較早的提交中獲取代碼。
沒(méi)有版本控制,我們無(wú)法做到這一點(diǎn)。
如果我們沒(méi)有備份代碼,那么如果出現(xiàn)問(wèn)題,我們可能會(huì)丟失所有內(nèi)容。
復(fù)雜代碼
應(yīng)該簡(jiǎn)化復(fù)雜的代碼,以便我們更容易理解它們。
我們還應(yīng)該將它們分解成較小的部分,以便我們可以重復(fù)使用某些內(nèi)容,并具有易于閱讀和測(cè)試的單個(gè)部分。
總結(jié)
這些常見的錯(cuò)誤,只要我們?cè)谧鍪虑榈臅r(shí)候注意點(diǎn),是很容易避免的。
將事物分解成小塊總是好的,就像保持事物簡(jiǎn)單而不重復(fù)一樣。
注釋掉了,沒(méi)有描述性的變量和值也應(yīng)該用更有意義的東西代替。