內容簡介
本書的原文書名為《Clean Code: A Handbook of Agile Software Craftsmanship》,根據作者的說法,《無瑕的程式碼》為Jolt得獎著作《敏捷軟體開發:原則、樣式及實務》的前傳。
在台灣另一本銷售極佳的書籍《重構─改善既有程式的設計》,根據亞馬遜Amazon網站的統計,購買該書原文版《Refactoring: Improving the Design of Existing Code》,又同時購買的其他書籍第一名,正是《Clean Code: A Handbook of Agile Software Craftsmanship》這一本書。
.第一章
作者開宗明義說明什麼是 Clean Code,他詢問了包含C++發明人 Bjarne Stroustrup、Eclipse 策略教父 Dave Thomas、極限程式設計大師 Ron Jeffries、維基與極限程式設計發明人,Ward Cunningham 等等的大師,從他們的眼光來描述什麼是 Clean Code,最後才說到作者本人認為的 Clean Code 應該長成什麼樣子,有什麼好處,以及學習撰寫Clean Code的基本原則。
最早知道這本書大約是前年 Ringle 已購買的原版書籍,並發現他常在課堂教授的空檔就津津有味地細讀該書,我想會吸引他如此認真閱讀絕對非同小可。不過當時我拿來略翻一下,有太多生活化的白話字彙 (如同極致軟體系列,但卻又更厚上太多),要翻查這些生字太吃力了些,故而放棄閱讀原文。沒想到國內出版社今年有相中該書,將之翻成中譯本,而且許多專業字彙還保留了原文的對應 (我很習慣軟體的原文字彙),讓我得以在兩個星期內就看完本書,而且到第10章以前 (約一半),可是逐字細讀。第10章以後,總感覺有些雜燴,有些是其他作者的論文,有些是原作者早期的文章,有許多主題已經是偏向程式開發領域的技術性議題,用來解釋「Clean Code」,我是覺得反而沒必要細讀,大略知道本意即可。
當時 Ringle 告訴我 Clean Code 的原則就是:每一個函式 (function, or method),不超過10行,最好是5行以內。天啊,這讓我很難以想像,我知道函式不能肥大,也不要有一堆的 if-then-else or switch 之類的判斷式,但如何縮短為只有10行以內的寫作,我也很難理解。不過細讀本書內容之後,總算能瞭解要如何作,當然,你更應該體會為何要這麼作。
簡而言之,程式寫作是一門「craftsmanship」,我還蠻喜歡中譯本將之翻為「工藝典範」。它既要精確,卻也期望將程式寫作昇華為具有美感的作品。我覺得,稍具有良心與審美觀的程式設計師,絕對不是只有滿足於「可以執行程式」。寫出來程式往往只是起點而已,持續不斷地精煉 (也就是重構),讓程式整潔,軟體才有可能具彈性與維護性。往往程式設計師只滿足於讓程式「順利運作」的狀態,有經驗豐富 (還有良心)的程式設計師,知道那其實是一種專業上的自殺行為。
所以,事實上,寫程式就如同寫散文一般,程式寫得艱澀冗長讓人無法理解,就代表散文寫作能力不佳。程式設計大師不認為他們在寫程式,而是在說故事。大師利用所選定的程式語言機制,來幫助建造更豐富更具表達力的語言,讓這個語言可以用來說故事。而簡短的函式,有意義的命名,以及漂亮的結構,則都有助於描述故事。
閱讀全文 »