重構—改善既有程式的設計(chapter 12,13)

1,187 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,187
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
71
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

重構—改善既有程式的設計(chapter 12,13)

  1. 1. May. 2011<br /> Jerry Hsu<br />Refactoring (ch 12, 13)<br />
  2. 2. 2<br />Classification<br />Chapter 12. Big Refactorings<br />本質<br />沒有準確的重構步驟<br />時間<br />
  3. 3. 3<br />Classification<br />Chapter 12. Big Refactorings<br />梳理並分解繼承體系<br />將程序式設計轉化為物件設計<br />將領域和表述/顯示分離<br />提煉繼承體系<br />
  4. 4. 4<br />Classification<br />12.1 Tease Apart Inheritance<br />梳理並分解繼承體系<br />混亂的繼承體系<br />重複的程式碼<br /><ul><li>某個繼承體系承擔了</li></ul>兩項不同的責任<br />交易種類<br />顯示風格<br />
  5. 5. 5<br />Classification<br />Tease Apart Inheritance<br />1. Extract class<br />
  6. 6. 6<br />Classification<br />12.1 Tease Apart Inheritance<br />2. Create sub class<br />3. Move method<br />
  7. 7. 7<br />Classification<br />12.1 Tease Apart Inheritance<br />
  8. 8. 8<br />Classification<br />12.1 Tease Apart Inheritance<br />
  9. 9. 9<br />Classification<br />12.2 Convert Procedural Design to Objects<br />將程序式設計轉化為物件設計<br />
  10. 10. 10<br />Classification<br />12.2 Convert Procedural Design to Objects<br />作法: 看課本<br />Ex: Page 5  Page 51<br />
  11. 11. 11<br />Classification<br />12.3 Separate Domain from Presentation <br />將領域和表述/顯示分離<br />
  12. 12. 12<br />Classification<br />12.3 Separate Domain from Presentation <br />MVC<br />Model  Domain<br />View  Presentation<br />Control  Logic<br />one business logic  multiple views<br />
  13. 13. 13<br />Classification<br />12.3 Separate Domain from Presentation <br />Invoker<br />Table entity<br />Business entity<br />Transform<br />Database<br />
  14. 14. 14<br />Classification<br />12.4 Extract Hierarchy <br />提煉繼承體系<br />某個class做了太多工作,其中一部分的工作是以大量條件式完成的<br />
  15. 15. 15<br />Classification<br />12.4 Extract Hierarchy <br />
  16. 16. 16<br />Classification<br />Chapter 13. Refactroing, Reuse and Reality<br />為什麼開發者不願意重構他們的程式<br />你不知道如何重構<br />重構的效益要長時間才能展現出來<br />重構是一項額外工作,老闆付錢給你是要你寫新功能<br />重構會破壞現有程式<br />
  17. 17. 17<br />Classification<br />Chapter 13. Refactroing, Reuse and Reality<br /><ul><li>重構的效益要長時間才能展現出來</li></ul>短期利益<br />程式碼總量變少<br />重複的程式碼有錯誤只需要修改一個地方<br />Trace, debug<br />中期利益<br />重構的抽象層對於定義後續檔案系統很有幫助<br />長期利益<br />我們的身體健康<br />
  18. 18. 18<br />Classification<br />Chapter 13. Refactroing, Reuse and Reality<br /><ul><li>降低重構帶來的額外開銷
  19. 19. Reduce the overhead of refactoring</li></ul>工具<br />雖然重構需要額外開銷,但是可以從”在程式開發期間其他階段降低所需心力及滯怠時間”而獲得補償<br />
  20. 20. 19<br />Classification<br />Chapter 13. Refactroing, Reuse and Reality<br /><ul><li>安全的進行重構</li></ul>How<br />相信自己的功力<br />相信compiler<br />相信test suite<br />相信 code review<br />
  21. 21. 20<br />Classification<br />Thank you<br />

×