薦書小攤-如何寫出令人尊敬的代碼《Clean Code》
《Clean Code》 這是我工作后讀的第一本書,也是想要推薦的第一本。
想寫出令人尊敬的代碼
程序員是一個技術工種,劃分為藍領,稱之新農民工。
既然是技術工種,業(yè)內以優(yōu)秀的開發(fā)能力,高效的做事手法,嚴謹?shù)墓ぷ鲬B(tài)度作為核心競爭力。
并且根據(jù)各項指標會劃分為初級,中級,高級,資深程序員,對應著不同的工作內容以及薪資。
工作的第一個年頭,一年級的我經(jīng)常會感嘆各個大佬寫出的非常值得尊敬的代碼(優(yōu)雅,簡潔,易維護...)
雖然在 code review 時經(jīng)常會對我的代碼提出各種各樣的要求和建議(挨罵)
但是怎么把代碼寫好這個問題還是沒有完整的認知,苦思不得其解。某天下班就找到大佬咨詢 "如何寫出令人尊敬的代碼" 這一問題。
大佬意味深長的看了我一眼以后,就推薦了這本《Clean Code》,看完之后,深感幸運。
讓代碼散發(fā)著善意
在講解《Clean Code》的一般原則之前,先看一下幾位大佬對此觀點的評價:
“Clean code does one thing well.” ? ?--- Bjarne Stroustrup (Inventor of C++)
“Clean code is simple and direct. Clean code reads like well-written prose.” ? --- Grady Booch (Pioneer of OO and UML)
“Clean code can be read, and enhanced by a developer other than its original author.” ? --- Dave Thomas (Godfather of the Eclipse Strategy)
“Clean code always looks like it was written by someone who cares.” ? --- Michael Feathers(Author of “Working effectively with legacy code”)
從上面的描述中,不難看出大家對Clean Code這一思想的認同,可以說 “Clean Code 就是心懷愛意地去編程”,讓你的程序單純、簡單、美好,當他人讀你的程序時,能感覺到“作者的善意”。
編程世界里的名詞
“如果要想深挖一個行業(yè),第一件事就是找到有關該行業(yè)的 100 個關鍵詞” -- 麥肯錫
《Clean Code》講解了我當時編碼過程中司空見慣卻又沒有重視的事項,總共分為以下幾大類:
命名
函數(shù)
注釋
Code format
類&對象
數(shù)據(jù)結構
錯誤處理
封裝
測試
迭代(持續(xù)重構)
并發(fā)編程等...
這些名詞,既是是剛做開發(fā)時的我,也能大致知道概念內容。但是在閱讀本書之前,我完全不知道應該如何在這些方面做出改進,更別說散發(fā)著 “開發(fā)者的善意” ?比如:
如何跟前端開發(fā)更默契的工作解耦
如何使團隊開發(fā)成員更便捷的使用已存在的接口
如何使測試同學提高測試的代碼覆蓋率
如何讓 BA(Business Analyst) 更精準的驗收功能等等

讀后感
認真做事
一年級時 leader 告訴我一句話 "程序員需要甄別以及避免玩具代碼。每月的工資除以當月的代碼行數(shù),便是公司所付的一行代碼錢,值不值,開發(fā)內心要有數(shù)。"
《Clean Code》是作者 “鮑勃大叔” 結合自己幾十年的開發(fā)經(jīng)驗總結的一套編程原則?!罢J真做事” 是作者 “鮑勃大叔” 給我的第一印象,讀完本書,他使我第一次明白認真做事的差距,
一盤炒飯,一把剪刀,一個手工品,一段代碼... 同樣的物品,價值可能相差百十倍。完成同樣一個需求,公司愿意給不同的人支付不一樣的薪水,背后的原因就在于此。
持續(xù)迭代
我大概是花了3周的時間閱讀本書。讀完之后,其實并不能記住書中描述的所有注意項。依舊是上面那位 leader 指導我:"搞技術,建立知識索引很重要。"
簡單來說,要先創(chuàng)建自己專業(yè)的知識體系,可以不會用,但是不能不知道。需要用到的時候,再專項去實踐。這個道理可能很多技術人都明白。
我自己從"建立索引" 引申出了一個觀點 ”但凡我做不到,認為無法完成的事務。世界上一定有辦法做到,只是我的索引(知識體系)沒有涵蓋到“
正如在閱讀本書之前,我并不知道如何優(yōu)化自己的代碼一般。這個觀點推動著我持續(xù)迭代自己的索引,補充自己的知識體系,并幫助我不斷提升代碼質量。
有趣的規(guī)則
代碼質量與整潔度成正比
程序員花費在讀代碼上的時間通常要10倍于真正編寫代碼上的時間,也即Writing vs. Reading的比例大概是1:10
優(yōu)秀的代碼大部分是可以自描述的,好于文檔和注釋
代碼大部分時候是用來維護的,而不只是用來實現(xiàn)功能的
大部分項目都不是朝生夕死的短命鬼,代碼實現(xiàn)是寫給身邊的隊友和自己看的,需要長期維護,不能應付了事。