重構 - Refactoring Lists

如果各位有接觸物件導向程式設計(OOP),有幾本書大概很難不買,「重構-改善既有程式的設計」、「Refactoring - Improving the Design of Existing Code」,侯捷大師還很用心提供了前六章的免費PDF電子檔。

原始下載點:refactoring-ch1-ch6.pdf
備份下載點:refactoring-ch1-ch6.pdf

以下只是書本首頁有個「重構列表, Refactoring Lists」,為查詢方便,記錄一下。
  1. Add Parameter ( 添加參數 )
  2. Change Bidirectional Association to Unidirectional ( 將雙向關聯改為單向 )
  3. Change Reference to Value ( 將引用物件改為實值物件 )
  4. Change Unidirectional Association to Bidirectional ( 將單向關聯改為雙向 )
  5. Change Value to Reference ( 將實值物件改為引用物件 )
  6. Collapse Hierarchy ( 摺疊繼承體系 )
  7. Consolidate Conditional Expression ( 合併條件式 )
  8. Consolidate Duplicate Conditional Fragments ( 合併重複的條件片段 )
  9. Convert Procedural Design to Objects ( 將程序式設計轉化為物件設計 )
  10. Decompose Conditional ( 分解條件式 )
  11. Duplicate Observed Data ( 複製「被監視資料」 )
  12. Encapsulate Collection ( 封裝群集 )
  13. Encapsulate Downcast ( 封裝「向下轉型」動作 )
  14. Encapsulate Field ( 封裝欄位 )
  15. Extract Class ( 提煉類別 )
  16. Extract Hierarchy ( 提煉繼承體系 )
  17. Extract Interface ( 提煉介面 )
  18. Extract Method ( 提煉方法 )
  19. Extract Subclass ( 提煉子類別)
  20. Extract Superclass ( 提煉超類別 )
  21. From Template Method ( 塑造模板函式 )
  22. Hide Delegate ( 隱藏「委託關係」 )
  23. Hide Method ( 隱藏某個函式 )
  24. Inline Class ( 將類別內聯化 )
  25. Inline Method ( 將函式內聯化 )
  26. Inline Temp ( 將暫時變數內聯化 )
  27. Introduce Assertion ( 引入斷言 )
  28. Introduce Explaining Variable ( 引入解釋性變數 )
  29. Introduce Foreign Method ( 引入外加函式 )
  30. Introduce Local Extension ( 引入區域性擴展 )
  31. Introduce Null Object ( 引入 Null 物件 )
  32. Introduce Parameter Object ( 引入參數物件 )
  33. Move Field ( 搬移欄位 )
  34. Move Method ( 搬移方法 )
  35. Parameterize Method ( 令函式攜帶參數 )
  36. Preserve Whole Object ( 保持物件完整 )
  37. Pull Up Constructor Body ( 建構式本體上移 )
  38. Pull Up Field ( 欄位上移 ) 
  39. Pull Up Method ( 函式上移 )
  40. Push Down Field ( 欄位下移 )
  41. Push Down Method ( 函式下移 )
  42. Remove Assignments to Parameters ( 移除對參數的賦值動作 )
  43. Remove Control Flag ( 移除控制旗標 )
  44. Remove Middle Man ( 移除中間人 )
  45. Remove Parameter ( 移除參數 )
  46. Remove Setting Method ( 移除設值函式 )
  47. Rename Method ( 重新命名函式 )
  48. Replace Array with Object ( 以物件取代陣列 )
  49. Replace Conditional with Polymorphism ( 以多型取代條件式 )
  50. Replace Constructor with Factory Method ( 以工廠函式取代建構式 )
  51. Replace Data Value with Object ( 以物件取代資料值 )
  52. Replace Delegation with Inheritance ( 以繼承取代委託 )
  53. Replace Error Code with Exception ( 以異常取代錯誤碼 )
  54. Replace Exception with Test ( 以測試取代異常 )
  55. Replace Inheritance with Delegation ( 以委託取代繼承 )
  56. Replace Magic Number with Symbolic Constant ( 以字面常數取代魔術數字 )
  57. Replace Method with Method Object ( 以函式物件取代函式 )
  58. Replace Nested Conditional with Guard Clauses ( 以衛述句取代巢狀條件式 )
  59. Replace Parameter with Explicit Methods ( 以明確函式取代參數 )
  60. Replace Parameter with Method ( 以函式取代參數 )
  61. Replace Record with Data Class ( 以資料類別取代記錄 )
  62. Replace Subclass with Fields ( 以欄位取代子類別 )
  63. Replace Temp with Query ( 以查詢取代暫時變數 )
  64. Replace Type Code with Class ( 以類別取代型別代碼 )
  65. Replace Type Code with State/Strategy ( 以State/Strategy 取代型別代碼 )
  66. Replace Type Code with Subclasses ( 以子類別取代型別代碼 )
  67. Self Encapsulate Field ( 自我封裝欄位 )
  68. Separate Domain from Presentation ( 將領域和表述/顯示分離 )
  69. Separate Query from Modifier ( 將查詢函式和修改函式分離 )
  70. Split Temporaty Variable ( 剖解暫時變數 )
  71. Substitute Algorithm ( 替換你的演算法 )
  72. Tease Apart Inheritance ( 梳理並分解繼承體系 )

希望未來能有機會,慢慢為每個項目加上Link,並說明我碰到的情況,期許自己更上一層樓。

加油!

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。