前情提要
在前兩篇文章中,我們已經明確了 Clean Code 的目的是減少團隊成員的溝通成本,今天我將根據自身的經驗講述怎樣才能學習編寫 Clean Code,這完全是一家之談,有不對之處,請不吝賜教。
如何提高代碼質量
老人的回答
大多數情況下,拿著這個問題去問有經驗的人,基本上都會到同樣的回答:多讀,多寫。更具體一些,就是,多讀別人寫的好的優秀的代碼,多自己寫代碼。可事實上,這個回答是沒有用的。很多寫不出高質量代碼的人,他是感受不到別人代碼的優秀的。舉一個例子,我曾經在西安參加過一屆 Code Retreat 活動,會上每個人都會在迭
代完了之后展示自己寫的代碼,我看到了很多優秀的設計,收到很多啟發。但是,跟我同去幾個小伙伴,有兩個都表示,不明白為什么別人的代碼好在哪里!
看了不懂還是不懂,死磕?
在老人向沒有經驗的人提出 “多寫多看” 的建議時,其實根本沒有考慮到對方感受力
的問題,這就像還沒有習得投籃基本功之前的櫻木花道完全感受不了流川楓高超的投籃技巧一樣。你看,如果你沒有看過這部漫畫,你也大概理解不了我使用這個比喻時所隱含的上下文。
感受力本質上是對話雙方話語交集的體現,新人缺乏足夠的基本功(或者說上下文和背景知識,本質上我認為是一樣的),自然無法理解老人口中的優秀代碼到底好在哪里。
期望有一天開竅?
事實上,這個問題不止在學習編程的過程中出現,它遍布幾乎所有的學習活動中。想一想,你在剛學習某一種技能的時候,是不是都會很疑惑,很多東西是怎么做到的,很多東西為什么必須那樣做而不能用另外的做法。
想一想,你是不是經常聽到 “多做,慢慢你就懂了” 這樣的話?事實上也真的是這樣子的,在到達某個臨界狀態之后,新人會好像 duang 地一下子開竅了,理解了之前所有不明白的東西。
悟性是不可靠的
要是一直不開竅呢?那你就是沒有悟性唄,先天不行!數學學不懂,就是左腦不發達;英語學不懂,就是語言功能不發達;不會畫畫,手殘唄;編程學不會,你是個女生嘛 -_-|| 這樣的例子太多太多了,我想說明的是,想要靠悟性來學習人,真的是可以洗洗睡了,別學了。
可是,如果不 "多看多寫",新人們還能怎么做呢?
凡事都要講方法
當下是一個學習方法盛行的時代,是一個鼓吹知識變現的時代,可是不得不承認,學習這件事,本身是有方法論的。只要掌握合適的學習方法,學習就不會是一個靠個人悟性的事情,學習也會變得容易的多。對于編寫整潔代碼這件事,前人也早就給出了好的方法,當然了,不是閱讀 Clean Code 這本書本身。
這就是答案
我看過很多關于如何編寫好的代碼的書,不得不說,看完之后,很多給我的感覺似懂非懂,并沒有得到多少實際的收獲。但是,有一本書,徹底改變我對整潔代碼的認識,它就是《構建之法:現代軟件工程》https://book.douban.com/subject/25965995/ 。
如果想學習提高代碼質量,這就是我的答案。
綜上所述,Clean Code 這本書,作為新人的你,不讀也罷。認真研讀 《構建之法:現代軟件工程》 吧,你可以從這本書中得到你真正需要的。