Clean Code 心得
因為公司有這本書的中文版,在各種等待時間,慢慢把這本看完了,同時也一邊寫些自己認為的重點。
其實我覺得 Clean Code 適合的閱讀對象,是從來沒有接觸過任何 Coding Style 的人。
如果你跟我一樣,有和別人合作過,平常有遵守一些準則(例如 PEP8),或是使用包含 Styling 的 linter (pylint / eslint / rubocop …),這本書還是能找到能學習的地方,例如命名原則、封裝的部分、模組的拆分、測試撰寫等等,這些開發準則以及自動化的 formatter 沒辦法告訴你的部分。
也難怪第一次聽到別人推薦大家看這本書的時候,把它歸類在「選讀」,卻又說裡面的內容很重要。因為很多觀念在現在已經是日常了。
比較後面的章節,從系統、平行化開始,討論了一些比較深入的知識,Java code 也開始變難懂了,而持續精鍊、JUnit 等章節,就真的是針對 Java 的實例做說明,而非原則介紹的部分,這些對我來說讀起來就比較吃力一點。而平常會聽到大家討論的,也都是前面章節討論一些基本原則的部分。因此對於時間比較少的人或許可以先點到為止。
我看網路上的心得也很少人真的讀完後面 XD
列舉一下我覺得比較重要的章節:
- Chp. 1 ~ Chp.10
- Chp. 12 簡單的總結
- Chp. 17 一個清單,其實包含了 Chp. 14-16 的一些啟發
我認為重要順序是倒著的,完全沒時間可以先看 Chp. 17
另外 Chp. 11 其實也蠻重要的,但是裡面太多 Java 的部分了,如果以後學 Java 再來細看吧。
大概是這樣,下面就附上我紀錄的每章節重點吧。
前言
Clean code 是一門學派,不是絕對正確
減少閱讀程式碼的時間
雜亂程式會拖累開發時間
讓程式清楚明白,不要隱藏意圖,避免 anti-pattern
童子軍規則:離開營地前,讓營地比使用前更乾淨
變數命名
- 類別:名詞,方法:動詞
- 避免無意義的字:the, variable, name
- 避免跟形態衝突的字(會誤導),除非他真的是那個形態:list, array
- 或是省去:
Accounts>AccountList
- 或是省去:
- 能搜尋
- 能唸出來
- 意義區別
- e.g.
source,destination取代a1,a2
- e.g.
- 同一概念統一字詞
- 在命名內加入 context,或是用 Class 包起來
善用詞性
類別:名詞
方法:動詞