重構-改善既有程式的設計

重構:狹義的解釋是重新整理已經寫好的程式碼。

重構:更廣義地解釋是不斷地整理正在寫的程式碼。

對於有重構思維的程序員來說,不論程式碼是否已經被完成,重構其實在編程過程中是不斷地在同步進行的。重構不在是笨重的黃金鎚!重構已經是一種內化行為!

三年前,剛考了一張號稱全民都有的SCJP,寫著自己都不知道有沒有OOP程式碼的菜鳥。還記得上班後第一次參加JAVA研討會,SDK的API都還不能算是熟捻的程度(現在也不熟XD),更何況大部分的議題都是不同應用領域的技術,兩天下來真的有萬念俱灰想死的念頭


(照片出處:http://www.flickr.com/photos/swanky-hsiao

當時侯捷老師的議題是Design Pattern相關的主題,當時我還很開心想說中於是跟「寫程式概念」有相關的主題,此行終於能學到些可以用的技術。依稀記得走出會場我的臉是呆滯的,侯老師這堂課也是壓垮我編程信心的最後一根稻草。當時還不能夠體會編程之美的我,回到新竹的路上,腦裡都在想轉行的事情。從此到書店看到侯老師翻譯的書,眼光都不自主地飄開,跟勇九可以在地圖上選擇不遇敵一樣。

超愛看中文程式輸的我,寧願上網看英文的重構相關文章。一半的原因是當年揮之不去的心魔。另一半的原因也是我一直在等歐萊里,看它們會不會出一本無腦的深入淺出重構。三年過去了,沒盼到深入淺出重構的問世,也只好硬著頭皮買了這本重構聖經的中文版。

書花了一兩個星期就完食了,看完一整個是相見恨晚真的是恨自己怎麼硬撐那麼久才買。書裡頭得重點我就不花時間寫心得了(最近也沒時間寫),直接把值得推薦的原因寫上。

作者的文筆和翻譯品質都在水準之上。我最怕的程式書就是API的說明狂貼,要不然就是文筆不順,明明都是中文但整句看完卻完全看不懂作者想要表示什麼。

內容完全與編程技巧相關。沒有太多抽象空泛的長篇大論,每道手法的使用時機、詳細步驟和範例都一應俱全。

程式碼範例皆用JAVA與簡單的UML來說明。我不需要在花時間在思考語法轉換或語義的問題上。

文章編排簡潔,行距也夠寬,眼睛不會看到很吃力。

每個技巧是一個獨立章節,第一次看當觀念書看,整本看完以後,將來透過索引快速參照就變成一本實用的工具書。

自己的編程水準是找不太出這本書的缺點,唯一硬要挑毛病的話,大概是程式碼範例如果能使等寬字型會更好(果然水準不夠的人都是從外觀開始找問題XD)。

這本書最棒的地方在於,藉由範例讀者可以知道什麼樣的程式碼是糟糕的程式碼,而這原本可能是你需要犯上大量的錯誤代價才能學到的經驗。更棒的是,不僅教你釣魚連釣魚竿都幫你買好了,範例的後面就是解決問題的答案(XD)。

花上幾百元再加上認真讀個一兩個星期,而光譜的另一端是犯下已知錯誤不得不加班修改的爆肝生活,真的會想的研發都應該知道要選擇哪一種未來!

6 則回應:

jain 提到...

有空就多寫心得感想文ㄚ(XD)

[ 小黑宅 ] 提到...

上面看起來像是很想省時間的留言。

jain 提到...

nono~~ 是很發自內心的想法,
畢竟有時間能寫一些自已的東西,
是很幸福的~

[ 小黑宅 ] 提到...

@Jain
說得一副自己很少更新的樣子 XD

Noid 提到...

嗯...
是要選...
爆肝嗎? XD

[ 小黑宅 ] 提到...

當然選表面上爆肝
實際上只要花一點點時間的作法 XD