Upcoming SlideShare
×

# 重構—改善既有程式的設計（chapter 12,13）

1,187 views

Published on

1 Like
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

Views
Total views
1,187
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
71
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 />