Refactoring
這次聽的課程主題是【程式設計人員的36計 - Pattern & Practices 總覽】,講師是彭靖灝先生。
內容則主要談的是程式架構,一位良好的設計者,可以從其程式的架構看出來。
課程中,明確的點出一般程式設計者的一些迷思。例如,快速開發的手法,一般初學的程式設計者,
常為了能快速寫出程式交差,而忽略了一些動作,如為程式加上註解說明、為程式模組化等。如果只是練習
的小程式,那也就罷了。一旦程式大了起來,這些看似無關的細節,往往就是專案開發中,最浪費時間的地方。
維護程式的部份,所謂的維護,就是只會被使用到二次以上或者以後有機會加強或改善的。
程式設計的藝術表現在於可維護的能力上。1. 易於擴充, 2. 易於修正, 3. 可長可久
要做到上面的,就該提到 Refactoring ,這意思是在不影響外在既有功能的情況下持續改善內部結構的過程。
講到這段,堂上展示了兩個同樣目的的 Code ,差別在於一個有經過 refactoring 一個沒有。兩個同時拿出來比較,
高下立判,真的是有相當的差別。
- 當你要新增一個功能,發現既有的程式架構並不能很方便的加入這功能時,先進行 refactoring ,讓它方便加入,之後才加入新功能
- 當你要開始進行refactoring 時。先確認手上有一組可進行的測試,這些測試都要能自動進行。
- 進行refactoring時,每次只進行一小步,這樣出錯時候就很容易找出問題。
- 任何人都可以些電腦能懂的程式;但好的開發人員會寫人能懂的程式。
架構設計的基本策略
- 切割(Partitioning)
- 將大問題變成小問題 - 簡化(Simplification)
- 將複雜的問題變成簡單的問題 - 重複(Iterative)
- 持續相同的程序解決個別的問題,使得大問題被解決。