書寫可維護(hù)性代碼的重要性娘纷。

本文是個人對書寫可維護(hù)代碼的一點(diǎn)點(diǎn)思考嫁审。

(一)整潔代碼的重要性。

《代碼整潔之道》赖晶、《實(shí)現(xiàn)模式》律适、《設(shè)計(jì)模式》、《重構(gòu)》遏插、《重構(gòu)和模式》這些書中捂贿,都指出書寫可維護(hù)代碼是十分重要的。想必每位開發(fā)者都能說出幾條原因吧胳嘲,這里我也梳理一下自己的邏輯厂僧。

什么是好代碼?概括地說就兩條:第一了牛,能實(shí)現(xiàn)需求颜屠,第二,可維護(hù)性高白魂。

1.1 能實(shí)現(xiàn)需求是第一要滿足的汽纤。

程序員工作的本質(zhì)是代碼交付。這是我們工作的基本福荸,若代碼不能實(shí)現(xiàn)需求蕴坪,肯定不是好的代碼。這一點(diǎn)是無需置疑的,任何其他方面的工作背传,都需要為它讓路呆瞻。因此有很多公司,把這一點(diǎn)作為績效考核的唯一要求径玖。

1.2 書寫可維護(hù)性代碼是老鳥和新手的本質(zhì)區(qū)別痴脾。

怎么衡量自己成長了呢?有一個看似開玩笑的方法是梳星,當(dāng)你去看自己以前寫的代碼赞赖,如果你覺得垃圾時,就表明自己進(jìn)步了冤灾。

那么前域,什么樣的代碼是可維護(hù)性高的代碼呢?《代碼整潔之道》給出的觀點(diǎn)是韵吨,代碼可維護(hù)性與其整潔度成正比匿垄。當(dāng)然也給出了整潔的代碼是什么樣的,并給出了原則和各種細(xì)則归粉。在我看來椿疗,作者只是把“可維護(hù)”重新定義成了“整潔”而已。

我總結(jié)的可維護(hù)性代碼的三大特點(diǎn)是:

  • 可讀性高糠悼。
  • 可擴(kuò)展性高届榄。
  • 可復(fù)用性高。

1 代碼要可讀性高绢掰。

《代碼整潔之道》中說痒蓬,如果你把敲代碼的過程進(jìn)行錄屏,就會發(fā)現(xiàn)大部分時間都是讀代碼的過程滴劲。

往往大部分代碼都是自己最近寫的攻晒,因此沒有理解上的難度。此時班挖,我們很少去關(guān)注代碼是否具有高可讀性鲁捏。變量名字叫什么無關(guān)緊要,是否有注釋也無關(guān)緊要萧芙,是否有優(yōu)化的空間更無關(guān)緊要给梅。我們下意識的心理邏輯是這樣的:反正都是自己寫的代碼,自己看得懂双揪,明天看這個代碼的人還是自己动羽。而完成任務(wù)是首要的,畢竟公司看重的還是任務(wù)完成指標(biāo)渔期,因?yàn)檫@點(diǎn)是影響績效运吓。

對待自己的代碼是這個態(tài)度渴邦,而對待他人的呢?對于非自己寫的代碼拘哨,比如要使用別人的接口時谋梭,基本上會問一下同事,“發(fā)起某某請求的方法倦青,在哪個文件瓮床,叫什么名字?”产镐,因?yàn)槲覀冎肋@樣做來得快隘庄,要自己去找,那可費(fèi)勁了磷账。

但是一直這么做會有問題的峭沦。正如《第五項(xiàng)修煉》說的那樣,你要解決的問題逃糟,很可能于來自上一次其他問題的解決方案,其實(shí)它們原本就不該出現(xiàn)蓬豁。

問題出現(xiàn)的場景一般都發(fā)生在維護(hù)時绰咽。自己寫的代碼,半年后能會去讀它的人仍可能是你本人地粪。屆時取募,你會想,自己當(dāng)初為啥要這么寫呢蟆技?那么長的一坨玩敏,竟然還沒有注釋,當(dāng)初的思路又是什么呢质礼?這個變量名是什么意思呢旺聚?恨不能穿越回過去,告訴自己:你現(xiàn)在的偷懶眶蕉,以后還會由你來買單的砰粹。

最可怕的是,當(dāng)你去維護(hù)別人寫的垃圾代碼造挽,心里罵著別人時碱璃。其實(shí),很可能現(xiàn)在的你同樣會坑以后的另外一個人饭入。當(dāng)你每敲一段代碼時嵌器,都要想一想那句名言:

代碼是給人看的,只是偶爾運(yùn)行一下谐丢。

2 代碼要可擴(kuò)展性高爽航。

寫出來的代碼,不會一成不變的。在迭代過程中岳掐,可能會多次修改凭疮。所以寫代碼時,不能只聚焦于眼下串述,只要完成功能就行了执解。想一想,如果一個月后纲酗,Boss說你要在某某功能模塊里添加一個小功能時衰腌,要怎么能快速定位到你的代碼。此時就要考慮代碼的可讀性以及設(shè)計(jì)模式了觅赊。

這一點(diǎn)右蕊,其實(shí)目前流行的mvvm框架,本身就是為了解決此問題的吮螺。就跟畫畫一樣饶囚,別人畫好了輪廓,我們只需要去著色就行了鸠补。高內(nèi)聚低耦合的代碼萝风,一直是我們追求的設(shè)計(jì)目標(biāo)。封裝變化紫岩、多用組合等思想规惰,良好的框架在這點(diǎn)上幫我們解決了不少問題。

3 代碼要可復(fù)用性高泉蝌。

既然一些代碼能夠復(fù)用歇万,說明它們能解決一些通用的問題。比如流行的框架和庫勋陪,本身就是讓別人復(fù)用的贪磺。可復(fù)用也是設(shè)計(jì)模式存在的原因粥鞋。你遇到的問題缘挽,大多少數(shù)時,前人就遇到過呻粹,并且給出了通用方案壕曼。而我們要做的就是“拿來主義”。

具體到項(xiàng)目時等浊,項(xiàng)目結(jié)構(gòu)必然要分層腮郊,底層代碼自然要抽出來。這個道理我們都懂筹燕≡桑《代碼整潔之道》中說衅鹿,重復(fù)是軟件一切邪惡的根源。所以过咬,Dont repeat youself大渤。


(二) 為什么我們寫出的代碼不是整潔代碼。

養(yǎng)成寫整潔的代碼掸绞,需要形成習(xí)慣泵三。但是新習(xí)慣的養(yǎng)成就是要克服掉舊習(xí)慣。大道理衔掸,誰都懂烫幕。難的是,知行合一敞映。為何自己寫的代碼那么糟糕较曼,我們能找到兩個常見的原因是:沒時間和沒反饋。

2.1 沒時間振愿。

最常找的理由之一就是捷犹,時間不夠。

我們前端工作的時間比例大致是這么劃分的冕末。書寫代碼和調(diào)試代碼的比例大概是3:7伏恐。

想必我們都有這種經(jīng)驗(yàn)。要實(shí)現(xiàn)一個頁面栓霜,不到兩三個小時就能實(shí)現(xiàn)大部分功能,然后發(fā)現(xiàn)一些小問題横蜒,即那些難纏的bug胳蛮,此時我們剩下的大部分時間都在對付這些可惡的“蟲子”,代碼改來改去丛晌。有時一個問題的定位仅炊、技術(shù)調(diào)研和與人溝通時間就能占據(jù)整個下午。真等到解決完這些小問題時澎蛛,也差不多到下班的時間了抚垄。

這是我們常見的一天里,沒有讓代碼整潔的時間谋逻。

項(xiàng)目完事了呆馁,馬上開始又啟動下一個項(xiàng)目。當(dāng)你愁眉苦臉地思考當(dāng)前如何完成功能時毁兆,此時你被通知要維護(hù)一下之前的項(xiàng)目浙滤。再次修改自己之前的代碼,你可能會感慨气堕,以后這塊需要好好修正修正纺腊∨线郑可惜手里項(xiàng)目太緊了,沒有時間揖膜。事實(shí)上通常是真沒有時間了誓沸。

這是我們項(xiàng)目周期間,沒有讓代碼整潔的時間壹粟。

2.2 沒反饋拜隧。

比寫糟糕代碼的更糟糕的事情是:你不知道你寫的代碼很垃圾。每個人都很忙煮寡,沒人幫我看代碼虹蓄,我也覺得自己寫得不好,但我又不知道如何改進(jìn)幸撕。這是很多新人的困境薇组,沒有反饋的練習(xí),練習(xí)再多也成不了高手的坐儿。

(三) 如何書寫整潔代碼律胀。

沒時間,會導(dǎo)致代碼寫不好貌矿,代碼糟糕炭菌,會導(dǎo)致更沒時間,這是一個死循環(huán)逛漫。

沒反饋黑低,就不知如何提高代碼質(zhì)量,進(jìn)而一直這樣持續(xù)下去酌毡。把第一年的經(jīng)驗(yàn)再重復(fù)幾年克握。這是一汪死水。

如何破這個局呢枷踏?


3.1 微習(xí)慣菩暗。

其實(shí),代碼要保持整潔旭蠕,就跟你屋子里保持清潔的方法一樣停团。讓屋子清潔很容易,你只需要進(jìn)行一次大掃除就可以了掏熬。但是要一直保持清潔佑稠,那么需要養(yǎng)成微習(xí)慣∧踅看完的書讶坯,不能隨便在桌子上一擺,要換洗的衣物岗屏,要放到固定的地方等等辆琅。每一個都是微習(xí)慣漱办。

從小事做起,比如變量名或方法名婉烟。好的代碼是不需要大量注釋的娩井,因?yàn)楹玫淖兞棵Q就起到了注釋的效果∷圃《代碼整潔之道》一書中洞辣,給出各個方面的整潔代碼是什么樣的。比如函數(shù)該怎么寫昙衅,注釋該怎么寫等等需要養(yǎng)成的微習(xí)慣扬霜。

3.2 清單思維。

養(yǎng)成微習(xí)慣是重要的而涉,但如何養(yǎng)成呢著瓶?答案是清單思維。

清單啼县,除了我們熟悉的todo list之外材原,還又一種核查清單。在清單上列出哪些我們需要注意的地方季眷,然后我們一條條去核對余蟹。做到了就打勾,這點(diǎn)對形成微習(xí)慣很有幫助的子刮。

比如威酒,我每次出門都不會丟三落四。因?yàn)槲矣涀∫痪湓捦ο浚焓忠X買煙火兼搏。

這里,我建立了一個核查清單:身份證沙郭、手機(jī)、鑰匙裳朋、錢包病线、煙和打火。同樣的道理鲤嫡,在我們?nèi)粘4a的開發(fā)中送挑,提交代碼之前,拿出清單對一對暖眼,直到自己養(yǎng)成習(xí)慣惕耕。

3.3 code review。

旁觀者清诫肠,當(dāng)局者迷司澎。從人性的角度來說欺缘,每個人或多或少都有雙向標(biāo)準(zhǔn)。相對于自己挤安,要求別人就嚴(yán)苛一點(diǎn)谚殊。這一人性卻可以為我們所用。同事之間進(jìn)行代碼回顧蛤铜,是對每個人都有好處的嫩絮。開始時看似浪費(fèi)時間,其實(shí)減少日后不該浪費(fèi)的時間围肥。也可以配合利用核查清單剿干,畢竟每個人對一個個具體的核查點(diǎn)的理解程度時不一樣的,這樣能幫助彼此更快地成長穆刻。而不是你向他人請教時置尔,只會得到”你去看某某書就行了“這樣的答案。

本文完蛹批。

整潔代碼的核查清單:
https://github.com/ryanmcdermott/clean-code-javascript#introduction

vue代碼的核查清單:
https://cn.vuejs.org/v2/style-guide/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撰洗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子腐芍,更是在濱河造成了極大的恐慌差导,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猪勇,死亡現(xiàn)場離奇詭異设褐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)泣刹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門助析,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人椅您,你說我怎么就攤上這事外冀。” “怎么了掀泳?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵义起,是天一觀的道長蕾殴。 經(jīng)常有香客問我载迄,道長捉兴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任马僻,我火速辦了婚禮庄拇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘韭邓。我一直安慰自己措近,他們只是感情好溶弟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著熄诡,像睡著了一般可很。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凰浮,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天我抠,我揣著相機(jī)與錄音,去河邊找鬼袜茧。 笑死菜拓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的笛厦。 我是一名探鬼主播纳鼎,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼裳凸!你這毒婦竟也來了贱鄙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤姨谷,失蹤者是張志新(化名)和其女友劉穎逗宁,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梦湘,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瞎颗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了捌议。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哼拔。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瓣颅,靈堂內(nèi)的尸體忽然破棺而出倦逐,到底是詐尸還是另有隱情,我是刑警寧澤宫补,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布僻孝,位于F島的核電站,受9級特大地震影響守谓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜您单,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一斋荞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧虐秦,春花似錦平酿、人聲如沸凤优。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筑辨。三九已至,卻和暖如春幸逆,著一層夾襖步出監(jiān)牢的瞬間棍辕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工还绘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留楚昭,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓拍顷,卻偏偏與公主長得像抚太,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子昔案,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355