2009年4月25日 星期六

重構一書閱讀小感

花了一個禮拜看完碁峯『重構-改善既有程式設計』

重構的定義:Refatoring:a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior of the software.

主要就是在說再不改變程式外在行為的前提下,修改軟體內部結構讓程式碼更容易使人了解閱讀

因為想要增進一些寫程式的技巧,最近一直在看這類的書

由於這本是我看的有關重構的第一本書,也很難說他好還是不好

我本身算是碁峯出版的信者,相關書籍我原先都會先考慮碁峯出的書

雖然作者會影響書的內容,但我覺得出版社的風格也會有相當的影響

不過碁峯最近幾本書個人認為實在編寫不太好,像『Visual C# 2008 程式設計經典』這本

反而沒有他前面幾本寫的好

『重構-改善既有程式設計』是比較舊的書了,市面上有關重構的書其實不多,真要看的話還必須找中國那邊出的或原文本
這本『重構-改善既有程式設計』個人認為寫的算中規中矩,對於沒有UML跟物件導向基礎的人來說會讀的相對吃力

裡面總結了程式碼的22個壞味道82個重構方法,內容還蠻多的,講解方面稍嫌生澀,並非那麼容易閱讀

裡面有句話我印像蠻深的

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.



大意就是說任何人都可以寫出電腦看得懂(可以Run)的程式,但唯有寫出『人』可以輕易看懂的程式,才是好的程式設計師。

這點實在讓我感同身受,至今我也看過也改過不少程式碼,想要把程式碼寫的讓人一看就懂實在不是件容易的事情。

為了那一點cpu cycle而將程式碼寫的非常難看,短期之內效能上可以非常好看

但是長期之下程式的維護成本將遠高過那一點點效能帶來的好處

一個程式主要的overhead集中在10%的不良演算法,除非有即時性(real-time)的考量

實在不該為了那一點點效能而讓整個程式發霉,整個軟體專案,Debug的時間常常是實際寫程式的好幾倍

還記得我之前寫過一個遊戲專案,技術的學習跟程式設計假設花了半個月,那我花在Debug的時間就是兩個月

這不成比例的時間配置就是沒有好好整理程式的下場,而且好的程式碼要最佳化也比較容易,他擁有更多可最佳化的的程式

真的要好好維護程式碼架構才真的是一個程式設計師該有的基本能力阿

沒有留言: