????? 由于最近在做重構的項目,所以對重構又重新進行了一遍學習和整理,對31天重構最早接觸是在2009年10月份,由于當時沒有訂閱[Sean Chambers](http://www.lostechies.com/blogs/sean_chambers/archive/2009/07/31/31-days-of-refactoring.aspx)的blog,所以是在國外的社區上閑逛的時候鏈接過去的。記得當時一口氣看完了整個系列并沒有多少感覺,因為這些基本上項目都在使用,只是我們沒有專門把它標示和整理出來,所以也沒有引起多大的重視。現在突然接手這個重構項目,由于團隊成員技術和經驗參差不齊,所以有必要專門整理一個重構的綱要,當然這個系列也非常適合做新系統的代碼規范參考,只要有代碼的地方,這個重構規范就很有價值。周末也不想出去閑逛,因為在剛到這個美麗的城市,沒有親戚或者朋友,所以才能靜下心來兩天時間寫完這個重構參考規范。同時也感受了Windows Live writer寫文章的快感。
當然這個項目重構的整體架構得另當別論(整體架構在我的這篇文章有專門的講解([http://www.cnblogs.com/zenghongliang/archive/2010/06/23/1763438.html](http://www.cnblogs.com/zenghongliang/archive/2010/06/archive/2010/06/23/1763438.html))。大的架構設計好了以后,這些重構細節點就成了東風之后的大火,對整個項目也是至關重要。31天重構這個系列和《代碼大全》、《重構:改善既有代碼的設計》比較起來最大的特點就是比較簡單、淺顯易懂。那么我這些文章也都是學習Sean Chambers的31天重構的筆記整理,所以如果大家對這個筆記有任何異議也可以指出。
- [31天重構學習筆記1. 封裝集合](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766436.html)
- ?[31天重構學習筆記2. 移動方法](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766437.html)
- [31天重構學習筆記3. 提升方法](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766438.html)
- [31天重構學習筆記4. 降低方法](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766583.html)
- [31天重構學習筆記5. 提升字段](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766590.html)
- [31天重構學習筆記6. 降低字段](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766597.html)
- [ 31天重構學習筆記7. 重命名(方法,類,參數)](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766607.html)
- [ 31天重構學習筆記8. 使用委派代替繼承](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766615.html)
- [ 31天重構學習筆記9. 提取接口](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766629.html)
- [ 31天重構學習筆記10. 提取方法](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766675.html)
- [ 31天重構學習筆記11. 使用策略類](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766705.html)
- [ 31天重構學習筆記12. 分解依賴](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766731.html)
- [ 31天重構學習筆記13. 提取方法對象](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766746.html)
- [ 31天重構學習筆記14. 分離職責](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766758.html)
- [ 31天重構學習筆記15. 移除重復內容](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766774.html)
- [ 31天重構學習筆記16. 封裝條件](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766799.html)
- [ 31天重構學習筆記17. 提取父類](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766815.html)
- [ 31 天重構學習筆記18. 使用條件判斷代替異常](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766927.html)
- [ 31天重構學習筆記19. 提取工廠類](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1766936.html)
- [ 31天重構學習筆記20. 提取子類](http://www.cnblogs.com/zenghongliang/archive/2010/06/28/1767055.html)
- [ 31天重構學習筆記21. 合并繼承](http://www.cnblogs.com/zenghongliang/archive/2010/06/29/1767236.html)
- [ 31天重構學習筆記22. 分解方法](http://www.cnblogs.com/zenghongliang/archive/2010/06/29/1767252.html)
- [ 31天重構學習筆記23. 引入參數對象](http://www.cnblogs.com/zenghongliang/archive/2010/06/29/1767292.html)
- [ 31天重構學習筆記24. 分解復雜判斷](http://www.cnblogs.com/zenghongliang/archive/2010/06/29/1767336.html)
- [ 31天重構學習筆記25. 引入契約式設計](http://www.cnblogs.com/zenghongliang/archive/2010/06/29/1767446.html)
- [ 31天重構學習筆記26. 避免雙重否定](http://www.cnblogs.com/zenghongliang/archive/2010/06/29/1767510.html)
- [ 31天重構學習筆記27. 去除上帝類](http://www.cnblogs.com/zenghongliang/archive/2010/06/29/1767528.html)
- [ 31天重構學習筆記28. 為布爾方法命名](http://www.cnblogs.com/zenghongliang/archive/2010/06/29/1767569.html)
- [ 31天重構學習筆記29. 去除中間人對象](http://www.cnblogs.com/zenghongliang/archive/2010/06/29/1767656.html)
- [ 31天重構學習筆記30. 盡快返回](http://www.cnblogs.com/zenghongliang/archive/2010/06/29/1767675.html)
- [ 31天重構學習筆記31. 使用多態代替條件判斷](http://www.cnblogs.com/zenghongliang/archive/2010/06/29/1767744.html)
具體也可以通過[http://www.lostechies.com/blogs/sean_chambers/archive/2009/07/31/31-days-of-refactoring.aspx](http://www.lostechies.com/blogs/sean_chambers/archive/2009/07/31/31-days-of-refactoring.aspx)查看原文。由于這些文章都是一些簡單的重構,所以沒有怎么過多的描述,但卻是對項目很有幫助。如有問題或建議,敬請指教,謝謝!
以后打算在博客園安家,寫下自己對技術的一點微薄見解,所以特此做一個文章索引 [圣殿騎士博文索引](http://www.cnblogs.com/zenghongliang/archive/2010/06/30/1764232.html),如果有感興趣的同仁,可以關注,如能起到幫助作用,那就是我莫大的榮幸!
**代碼下載地址:**[http://github.com/schambers/days-of-refactoring](http://github.com/schambers/days-of-refactoring)
- 前言
- 索引
- 1. 封裝集合
- 2. 移動方法
- 3. 提升方法
- 4. 降低方法
- 5. 提升字段
- 6. 降低字段
- 7. 重命名(方法,類,參數)
- 8. 使用委派代替繼承
- 9. 提取接口
- 10. 提取方法
- 11. 使用策略類
- 12. 分解依賴
- 13. 提取方法對象
- 14. 分離職責
- 15. 移除重復內容
- 16. 封裝條件
- 17. 提取父類
- 18. 使用條件判斷代替異常
- 19. 提取工廠類
- 20. 提取子類
- 21. 合并繼承
- 22. 分解方法
- 23. 引入參數對象
- 24. 分解復雜判斷
- 25. 引入契約式設計
- 26. 避免雙重否定
- 27. 去除上帝類
- 28. 為布爾方法命名
- 29. 去除中間人對象
- 30. 盡快返回
- 31. 使用多態代替條件判斷
- 重新整理下載