軟體設計原則

一次搞懂物件導向程式設計的特性

會寫程式很簡單,寫出好的程式很難。上次寫了一篇 Clean Code 筆記,算是比較進階的,最近剛好複習了比較基本的一些物件導向相關原則與特性,於是就寫出了這篇。

這些物件導向的基本觀念和 Clean Code 一樣,平常可以幫助自己讓 code 寫得更易懂且更好維護,而且 Code Review 時可以拿來嗆同事(X),同時也算是面試的熱門考題之一,因此一次整理成一篇記下來,希望能幫助到自己和其他剛好找到這篇的人。

這邊主要以條列和簡單說明為主,因為我相信原則和定律皆由其簡單的解釋方式,若要更深的討論也是可以分別寫成文章的,但就不是這篇的目的了。

Clean Code 心得

因為公司有這本書的中文版,在各種等待時間,慢慢把這本看完了,同時也一邊寫些自己認為的重點。 其實我覺得 Clean Code 適合的閱讀對象,是從來沒有接觸過任何 Coding Style 的人。 如果你跟我一樣,有和別人合作過,平常有遵守一些準則(例如 PEP8),或是使用包含 Styling 的 linter (pylint / eslint / rubocop …),這本書還是能找到能學習的地方,例如命名原則、封裝的部分、模組的拆分、測試撰寫等等,這些開發準則以及自動化的 formatter 沒辦法告訴你的部分。 也難怪第一次聽到別人推薦大家看這本書的時候,把它歸類在「選讀」,卻又說裡面的內容很重要。因為很多觀念在現在