大神級(jí)程序員透露的11個(gè)不傳秘籍(下篇)

跟大家普及的更多是編程過(guò)程的基礎(chǔ)技巧忙干,雖然基礎(chǔ)但是如果能轉(zhuǎn)化吸收并較好的運(yùn)用辕翰,對(duì)你能有不小的提升藐守。

接下來(lái)則側(cè)重分享項(xiàng)目實(shí)戰(zhàn)過(guò)程中需要掌握的技巧。


image.png

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)饱苟。

image.png

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)有效的減少了大量代碼量温治,且整體邏輯更易于閱讀及修改饭庞。

image.png

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)目的文檔祈坠。

image.png

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)意間遺失。

image.png

常見的代碼版本控制系統(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ù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市辅甥,隨后出現(xiàn)的幾起案子酝润,更是在濱河造成了極大的恐慌,老刑警劉巖璃弄,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件要销,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡夏块,警方通過(guò)查閱死者的電腦和手機(jī)蕉陋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門捐凭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人凳鬓,你說(shuō)我怎么就攤上這事茁肠。” “怎么了缩举?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵垦梆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我仅孩,道長(zhǎng)托猩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任辽慕,我火速辦了婚禮京腥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘溅蛉。我一直安慰自己公浪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布船侧。 她就那樣靜靜地躺著欠气,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镜撩。 梳的紋絲不亂的頭發(fā)上预柒,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音袁梗,去河邊找鬼宜鸯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛遮怜,可吹牛的內(nèi)容都是我干的顾翼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼奈泪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了灸芳?” 一聲冷哼從身側(cè)響起涝桅,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烙样,沒(méi)想到半個(gè)月后冯遂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谒获,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蛤肌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了壁却。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡裸准,死狀恐怖展东,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情炒俱,我是刑警寧澤盐肃,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站权悟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沮协,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一抛姑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧榔昔,春花似錦驹闰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至茧彤,卻和暖如春骡显,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背曾掂。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工惫谤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人珠洗。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓溜歪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親许蓖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蝴猪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容