? ????? 從大學(xué)到工作幾年污秆,一直在做前端的工作皂股,當(dāng)然前端這個概念也是相當(dāng)?shù)拇笫裕旧嫌袀€UI界面的都可以叫前端,不過今天不說這些,就說說寫代碼躁锁。
? ????? 什么代碼才算“好”纷铣,對于很多人來說很難界定。所以我一直習(xí)慣這么認(rèn)為战转,沒有或者很少壞味的代碼搜立,我就認(rèn)為這是好代碼。然后苦惱的事情來了槐秧,幾十年的行業(yè)積累啄踊,關(guān)于壞味的定義怕是不下于上千種,靠腦子記然后對比嗎刁标?這明顯是不那么時髦的做法颠通。我更推崇這么一種觀念,代碼如文章膀懈,畢竟寫代碼是給人看的顿锰,需要承上啟下,來龍去脈启搂。如果你看到一段代碼硼控,不能如同新聞報道那樣簡潔明了,那么這就必然不是好代碼胳赌。
? ????? 既然要講究簡潔明了牢撼,那就涉及到兩個衡量標(biāo)準(zhǔn),一個是代碼復(fù)雜度疑苫,一個是語義化熏版。
? ? ????代碼復(fù)雜度具體內(nèi)容就請百度谷歌,這里就不作科普介紹捍掺。我只說說個人關(guān)于如何降低代碼復(fù)雜度的觀點撼短。實際工作中有很多我認(rèn)為不那么聰明的做法,比如給你一個需求乡小,最終代碼就是完全開發(fā)者動手時的思路阔加,直來直去,尤其是一些條件判斷多的情況下满钟,嵌套復(fù)雜胜榔,語句臃腫,一個函數(shù)超過一兩百行湃番,一個模塊就是整個系統(tǒng)夭织。
? ? ? ? 不要問,問就是趕著上線吠撮。那么問題來了尊惰,作為程序員,應(yīng)該知道技術(shù)債務(wù)的危險性,一是對項目弄屡,二是對個人题禀。對項目的危害暫且不談,對個人的危害需要有一個充分的認(rèn)識膀捷。通陈踵冢基于現(xiàn)實的壓力(包括來自管理層的顧慮和自身技術(shù)能力),我所遇到的大部分程序員都沒有足夠的還債能力全庸,長期處于一種接需求秀仲,沖績效,上線壶笼,再循環(huán)整個過程神僵,直至代碼實在改不動了,就推翻重來覆劈,美其名曰重構(gòu)保礼。幸運的是,前端這個領(lǐng)域重寫的壓力并不是很大责语,不需對可用性氓英、安全方面要求非常苛刻鹦筹,不像服務(wù)端或者數(shù)據(jù)庫那樣一旦推翻重來代表著災(zāi)難。不幸的是址貌,前端仔通常都會被看輕一級铐拐,一部分原因就是因為要求低,還有一部分原因是因為要求低练对,而順帶著個人的水平也低遍蟋。
? ? ? ? 年輕人還是要多讀書,提高提高姿勢水平螟凭。像《人月神話》虚青、《重構(gòu)》這些軟件設(shè)計領(lǐng)域方面的書就包含了許多前人編程的經(jīng)驗知識,看的越多越覺得自己懂得少螺男。
? ? ? ? 除了讀書棒厘,還需要實際工作中操作一番。怎么一邊工作一邊提高自己的代碼水平下隧,我推崇重構(gòu)奢人。
? ? ? ? 重構(gòu)不是大刀寬斧,它應(yīng)是一種行為上的習(xí)慣淆院,應(yīng)該是精致的何乎,小而美的一個過程。每一個變量名,都需要語義化支救;每一個if else語句抢野,都應(yīng)該保證嵌套的內(nèi)容只有一行代碼,甚至去掉這個嵌套各墨;不使用switch指孤,應(yīng)該用策略模式;異步的回調(diào)欲主,使用promise或者await處理為串行邏輯邓厕;每一個函數(shù),應(yīng)該限制在50行代碼以內(nèi)扁瓢。
? ? ? ? 下面讓我拋磚引玉详恼,用一個例子解釋一下重構(gòu)的過程