【讀書心得】無瑕的程式碼:敏捷軟體開發技巧守則
書籍資訊:
書名:無瑕的程式碼:敏捷軟體開發技巧守則
原文書名:Clean Code: A Handbook of Agile Software Craftsmanship
作者:Robert C. Martin
譯者:戴于晉、博碩文化
出版社:博碩文化
出版日期:2013/03/22
ISBN:9862017058
ISBN-13:9789862017050
心得:
clean code,中文翻譯為無瑕的程式碼,如其名,這本書在教你如何撰寫 "無瑕" 的程式碼,所謂的 "無暇" 包括但不局限於可讀性高、測試完整、架構優美這些軟體工程師一直在追求的抽象概念。而 Robert C. Martin 透過本書分享這些抽象概念在他心目中具體的樣子。書中提到,如何定義 "無暇" 就如同學派一般沒有絕對正確,其規則可能具有爭議,但都應該相互尊重。
本書分為三個階段,第一階段會介紹各種原則與技巧;第二階段則進入實戰,利用第一階段的所學來重構優化實際存在的開源程式碼;最後則是總結與附錄補充。其中第二階段的閱讀難度較高、程式碼量多,必須反覆確認修改原因以及思考修改方案。所以我會建議讀者至少要善於閱讀程式碼,最好是擁有接手維護他人程式或參與開源專案的經驗後再來閱讀本書。
本書兩大優點之一,作者在描述原則技巧時大多站在較抽象的角度來說明,且程式碼都遵照其書中法則而擁有高可讀性,這使得本書知識較不易受到程式語言或工具更新而過時,同時也讓讀者在不熟悉細部實作時依舊能吸收到部分知識。例如圖中這頁探討例外處裡的段落,我相信即便不熟 JAVA 語法的工程師也能看懂該段落,並學到 special case pattern 如何取代例外處理。
本書兩大優點之二,內容廣度足夠且各章節相依性低,支持跳章節閱讀。即便部分章節 (例如平行化) 在沒有經驗的前提下可能真的看不懂,也能順利吸收書中其他知識。
缺點:
作者雖然在開頭提到方法沒有絕對正確且可能具有爭議,但是其內文對於不遵守原則的程式皆採用懶惰、令人厭惡等較攻擊性的字眼。我認為會如此是因為 Robert C. Martin 的技藝相當純熟,以至於誤認為大家應該要擁有實力與立場在工作中實施這些原則。
但現實往往骨感,就我的工作經驗看來,工程師不見得真的是懶惰或怪罪於時間,更多時候是能力不足,擁有判斷程式好壞的能力與能寫出好程式間的落差比想像中大很多。更不要說軟體工程師是一份工作,每個人對於工作的定位以及願意付出的資源皆不同,不應使用如此攻擊性的字眼。
這也導致網路上有時會看見關於信徒過度管制、批評同事程式碼的故事。有關這部分,我認為可以延伸閱讀這篇有相同論點的文章:Compassionate code,個人覺得寫得很好。
總結:
《無瑕的程式碼:敏捷軟體開發技巧守則》沒話說的是一本多年難得一件的好書,完全不愧對博碩文化將其作為 "名家著作" 系列第一本的地位。作者實力之高、內容概念之抽象使得這本書不容易受時間影響而降低價值。只要你是一位軟體工程師,不論處於哪個階段,你都能從這本原著 2008 出版的書籍中獲得啟發或審視,並讓自己寫出更好的程式碼。
我想絕大部分的人皆認同書中描述的 "無瑕" 一種良好狀態、一個好指標。可惜的是我們 (至少我) 不是 Robert C. Martin 那樣的大師,除了時間外更沒有足夠的實力來執行與認同書中全部的作法。但記住書中提到的童子軍原則「離開營地前,讓營地比使用前更乾淨」。"無瑕" 或許無法被達到,但它是一個可以追逐的目標,與大家共勉。
留言列表