跟大家普及的更多是編程過(guò)程的基礎(chǔ)技巧忙干,雖然基礎(chǔ)但是如果能轉(zhuǎn)化吸收并較好的運(yùn)用辕翰,對(duì)你能有不小的提升藐守。
接下來(lái)則側(cè)重分享項(xiàng)目實(shí)戰(zhàn)過(guò)程中需要掌握的技巧。
6. 通過(guò)代碼縮進(jìn)提高可讀性
錯(cuò)落有致的代碼能更容易閱讀蹂风。
不同語(yǔ)言的縮進(jìn)規(guī)則有所不同卢厂,JavaScript通常是兩個(gè)空格,可以根據(jù)團(tuán)隊(duì)習(xí)慣有所調(diào)整惠啄,例如有人習(xí)慣用tab縮進(jìn)慎恒,默認(rèn)是四個(gè)空格。
但是像Python語(yǔ)言是嚴(yán)格要求四個(gè)空格縮進(jìn)的撵渡,如果用錯(cuò)會(huì)導(dǎo)致代碼報(bào)錯(cuò)融柬。
優(yōu)化前:
function printHello() {
console.log("Hello, world!");
}
printHello();
優(yōu)化后:
function printHello() {
console.log("Hello, world!");
}
printHello();
上述代碼通過(guò)縮進(jìn)使代碼更清晰,也更容易閱讀趋距。
通常粒氧,每當(dāng)啟動(dòng)新塊時(shí),都應(yīng)縮進(jìn)代碼节腐。塊是一起執(zhí)行的代碼段外盯。
例如,塊可以是函數(shù)翼雀、if 語(yǔ)句或 for 循環(huán)饱苟。
7. 通過(guò)換行提高代碼可讀性
除了使用縮進(jìn)提升代碼可讀性外,我們還可以適當(dāng)?shù)氖褂脫Q行來(lái)提升可讀性狼渊。
通過(guò)換行讓代碼塊與塊之間更清晰箱熬。
示例一:
function printHello() {
console.log("Hello, world!");
}
function printWelcome(name) {
console.log("Hello, " + name);
}
通過(guò)換行,分隔開兩個(gè)函數(shù),使整體可讀性提升
示例二:
let firstName = '啟強(qiáng)';
let lastName = '高';
alert(lastName + firstName);
通過(guò)換行城须,將變量的聲明與使用分隔開蚤认,更清晰
當(dāng)然也不要過(guò)量的使用換行,肆意使用可能會(huì)產(chǎn)生相反的效果酿傍。
8. 善于使用數(shù)組烙懦、循環(huán)及條件判斷提升效率
數(shù)組、循環(huán)及條件判斷都是很基礎(chǔ)的知識(shí)赤炒,雖然很容易掌握氯析,但如何使用也有不少學(xué)問(wèn)。
下面帶你了解其中一些基礎(chǔ)知識(shí)莺褒,
- if(條件判斷):
提前整理歸納判斷條件掩缓,避免不必要的嵌套if語(yǔ)句
優(yōu)化前:
if (x > 0) {
if (x < 10) {
console.log("x介于0與10之間,但不等于");
} else {
console.log("x大于等于10");
}
} else {
console.log("x小于等于0");
}
優(yōu)化后:
if (x > 0 && x < 10) {
console.log("x介于0與10之間遵岩,但不等于");
} else if (x >= 10) {
console.log("x大于等于10");
} else {
console.log("x小于等于0");
}
優(yōu)化后邏輯更清晰你辣,也避免多層嵌套導(dǎo)致不易閱讀
- for & array(再結(jié)合數(shù)組與循環(huán))
通過(guò)數(shù)組與循環(huán)減少重復(fù)代碼量。
友情提示一點(diǎn)尘执,未來(lái)項(xiàng)目實(shí)戰(zhàn)中舍哄,盡量避免將數(shù)據(jù)庫(kù)語(yǔ)句執(zhí)行直接放在循環(huán)中觸發(fā),這樣容易導(dǎo)致超負(fù)載誊锭。
可以先通過(guò)循環(huán)整合處理好需要的條件語(yǔ)句表悬,再合并統(tǒng)一進(jìn)行執(zhí)行處理。
優(yōu)化前:
let number1 = 10;
if (number1 > 0 && number1 < 10) {
console.log("number1介于0與10之間丧靡,但不等于");
} else if (number1 >= 10) {
console.log("number1大于等于10");
} else {
console.log("number1小于等于0");
}
let number2 = 10;
if (number2 > 0 && number2 < 10) {
console.log("number1介于0與10之間蟆沫,但不等于");
} else if (number1 >= 10) {
console.log("number1大于等于10");
} else {
console.log("number1小于等于0");
}
優(yōu)化后:
let numbers = [-5, 0, 5, 10, 15];
for (let i = 0; i < numbers.length; i++) {
let x = numbers[i];
if (x > 0 && x < 10) {
console.log(x+"介于0與10之間,但不等于");
} else if (x >= 10) {
console.log(x+"大于等于10");
} else {
console.log(x+"小于等于0");
}
}
優(yōu)化后通過(guò)循環(huán)有效的減少了大量代碼量温治,且整體邏輯更易于閱讀及修改饭庞。
9. 盡可能的編寫使用文檔或接口文檔
代碼中寫好注釋是一個(gè)好習(xí)慣,但那是為了便于我們回顧代碼熬荆,檢查糾錯(cuò)舟山。
日常中我們經(jīng)常需要編寫函數(shù)或者接口來(lái)支持實(shí)現(xiàn)一個(gè)整體的功能,可能這些接口原本已經(jīng)有其他人實(shí)現(xiàn)過(guò)惶看。
但是因?yàn)闆](méi)有具體的文檔可以方便查閱捏顺,我們?nèi)菀?strong>重復(fù)造輪子重新編寫一個(gè)。
這樣不僅效率低下纬黎,而且還不利于后期優(yōu)化修改幅骄。
工欲善其事必先利其器
當(dāng)然為了避免重復(fù)造輪子,我們更要利用好的庫(kù)與框架本今。
使用大佬們寫好的且功能經(jīng)過(guò)大眾考驗(yàn)迭代的工具拆座。
畢竟自己造的輪子一開始可能是正方形的主巍,雖然勉強(qiáng)能用,但是沒(méi)經(jīng)過(guò)時(shí)間和過(guò)程的打磨是缺少一定效率的挪凑。
必要的時(shí)候甚至連項(xiàng)目都可以通過(guò)找到現(xiàn)成的加以改造來(lái)避免無(wú)意義的工作孕索。
編寫文檔是一件很痛苦的事,但是如果代碼中已經(jīng)有規(guī)范的注釋躏碳,我們可以借助一些自動(dòng)化文檔生成工具實(shí)現(xiàn)自動(dòng)化文檔編寫搞旭。
如何才能更好的支持自動(dòng)化生成文檔:
使用清晰且具有描述性的變量和函數(shù)名稱。
函數(shù)盡量做到極簡(jiǎn)菇绵,一個(gè)函數(shù)對(duì)應(yīng)一件事肄渗,容易描述。
通過(guò)使用命名常量來(lái)避免幻數(shù)(沒(méi)有明顯含義的數(shù)字)咬最。
使用空格將代碼分隔為邏輯塊翎嫡。
使用清晰一致的編碼約定。這使您的代碼更易于閱讀和理解永乌,即使對(duì)于不熟悉您的代碼庫(kù)的人也是如此惑申。
提前找到滿意的文檔生成方式,并盡可能迎合它的規(guī)則翅雏。
同時(shí)學(xué)會(huì)查看文檔圈驼,使用文檔,也是很有必要的望几。
通過(guò)了解優(yōu)質(zhì)項(xiàng)目的文檔來(lái)提升自己的文檔水平碗脊,同時(shí)也能為自己儲(chǔ)備工具知識(shí)庫(kù),當(dāng)需要實(shí)現(xiàn)某些功能時(shí)橄妆,不必再自己動(dòng)手造輪子。
例如《微信小程序開發(fā)文檔》或者《Vant中文文檔》都是很不錯(cuò)的庫(kù)或者框架類項(xiàng)目的文檔祈坠。
10. 編寫簡(jiǎn)潔可靠的代碼
我們可以通過(guò)SOLID框架來(lái)思考如何編寫簡(jiǎn)潔可靠的代碼害碾。
SOLID 是一個(gè)縮略詞,引用了五個(gè)關(guān)鍵的軟件設(shè)計(jì)原則赦拘,由敏捷軟件開發(fā)宣言的創(chuàng)始人慌随、《清潔代碼》的作者 Robert C. Martin 創(chuàng)造。
SOLID 的五大設(shè)計(jì)原則是:
單一責(zé)任原則躺同。該原則指出阁猜,每個(gè)類或模塊都應(yīng)該有一個(gè)(并且只有一個(gè))更改原因。換句話說(shuō)蹋艺,每個(gè)類或模塊應(yīng)該只負(fù)責(zé)一件事剃袍。
開/閉原則。該原則指出捎谨,軟件應(yīng)該開放擴(kuò)展民效,但避免修改憔维。也就是說(shuō),你編寫的類與模塊應(yīng)該具有更好的拓展性畏邢,且不需要修改代碼本身业扒。
里氏替換原則。該原則指出舒萎,子類應(yīng)該可替代其超類程储。也就是說(shuō),子類應(yīng)該能夠代替其超類而不會(huì)引起任何問(wèn)題臂寝。
接口隔離原則章鲤。該原則指出,不應(yīng)強(qiáng)迫客戶依賴他們不使用的方法交煞。換句話說(shuō)咏窿,每個(gè)接口都應(yīng)該很小,并且專注于特定目的素征。
依賴反轉(zhuǎn)原則集嵌。該原則指出,應(yīng)反轉(zhuǎn)依賴項(xiàng)御毅。也就是說(shuō)根欧,高級(jí)模塊不應(yīng)依賴于低級(jí)模塊。相反端蛆,兩者都應(yīng)該依賴于抽象凤粗。
這些原則對(duì)于新手可能不好記憶與理解。但是當(dāng)你積累一定編程經(jīng)驗(yàn)后你會(huì)慢慢意識(shí)到其中的重要性今豆。
11. 使用代碼版本控制系統(tǒng)
每一段代碼都包含著程序員的汗水嫌拣,不要讓它在不經(jīng)意間遺失。
常見的代碼版本控制系統(tǒng)有:
Git
Svn
Mercurial
通常更建議使用Git呆躲,具體的Git使用方法及部署方法可以參考《Git快速入門》
使用代碼版本控制系統(tǒng)的好處:
有助于多人團(tuán)隊(duì)協(xié)同開發(fā)時(shí)异逐,相互間代碼的協(xié)同管理
避免誤刪文件等操作導(dǎo)致代碼丟失,導(dǎo)致加班復(fù)原
利用好分支開發(fā)有助于代碼審查插掂,減少BUG
能更清晰的觀察到每次迭代的代碼灰瞻,有利于調(diào)試與修復(fù)