最近有幸,發現一個博友的博客中對代碼重構,作了一番簡單的講解。以爲很不錯,比較淺顯移動,一口氣讀完了。今天經過本身的理解,翻譯一下,可能有不少不對的地方,請你們指正。共同窗習,共同進步。html
原博客地址:https://lostechies.com/seanchambers/2009/07/31/31-days-of-refactoring/ web
隨着時間的推移,重構是提高代碼質量不可或缺的一部分。沒有重構,慢慢的就會積累不少的技術債務。忘記代碼的實現部分,首先創建代碼的測試部分。這就比較像TDD(測試驅動開發)。這個概念其實很簡單,就是經過寫測試單元,來構建學習
更健壯的,bug更少的代碼。關於TDD測試驅動開發,雖然概念簡單,可是內容仍是比較多的,你們能夠看看關於測試驅動開發部分的相關資料。測試
因爲重構的重要性,我用31天這樣一個概念來共同窗習一下。我會經過本身的理解來說述,可能存在喝多歧義和正確性。在我實際寫完博客以前,我不會先列出一個列表來展現後面的內容。每當我寫完一章,我會及時在這裏更新鏈接。spa
重構的主要內容來自Refactoring.com,有一部分來自於Code Complete 2nd Edition(代碼大全),剩下的一部分來自於我在工做中的總結。我以爲這些內容來自哪裏,並非最重要的,或許你在其餘的博客和書上可以看到相同的重構名稱。翻譯
明天開始我會持續寫完這個專題,但願你們可以從中學到關於重構的一些東西,也但願你們指正錯誤,共同窗習。設計
Day1:封裝集合 http://www.cnblogs.com/yplong/p/5276598.htmlorm
Day2:方法搬移 http://www.cnblogs.com/yplong/p/5278394.htmlhtm
Day3:方法提公 http://www.cnblogs.com/yplong/p/5278506.html對象
Day4:方法下降 http://www.cnblogs.com/yplong/p/5285371.html
Day5:提高字段 http://www.cnblogs.com/yplong/p/5285427.html
Day6: 下降字段 http://www.cnblogs.com/yplong/p/5285457.html
Day7: 重命名 http://www.cnblogs.com/yplong/p/5289612.html
Day8: 使用委託來代替繼承 http://www.cnblogs.com/yplong/p/5295866.html
Day9:提取接口 http://www.cnblogs.com/yplong/p/5300096.html
Day10:提取方法 http://www.cnblogs.com/yplong/p/5300144.html
Day11:策略模式代替Switch http://www.cnblogs.com/yplong/p/5308648.html
Day12:依賴分解 http://www.cnblogs.com/yplong/p/5318576.html
Day13:抽取方法對象 http://www.cnblogs.com/yplong/p/5362434.html
Day14:職責分離 http://www.cnblogs.com/yplong/p/5362567.html
Day15:移除重複代碼 http://www.cnblogs.com/yplong/p/5362603.html
Day16 封裝條件語句 http://www.cnblogs.com/yplong/p/5362663.html
Day17:抽取父類 http://www.cnblogs.com/yplong/p/5373012.html
Day18:用條件語句代替異常 http://www.cnblogs.com/yplong/p/5373025.html
Day19 提取工廠類 http://www.cnblogs.com/yplong/p/5373045.html
Day20 提取子類 http://www.cnblogs.com/yplong/p/5373076.html
Day21 封裝繼承 http://www.cnblogs.com/yplong/p/5373095.html
Day22 分解方法 http://www.cnblogs.com/yplong/p/5374000.html
Day23 引入參數 http://www.cnblogs.com/yplong/p/5374015.html
Day24 分解複雜的判斷 http://www.cnblogs.com/yplong/p/5374031.html
Day25 引入契約設計 http://www.cnblogs.com/yplong/p/5374050.html
Day26 移除雙重否認 http://www.cnblogs.com/yplong/p/5381369.html
Day27 去除上帝類 http://www.cnblogs.com/yplong/p/5381398.html
Day28 給bool方法命名 http://www.cnblogs.com/yplong/p/5381432.html
Day29 去除中間人 http://www.cnblogs.com/yplong/p/5381455.html
Day30 儘快返回 http://www.cnblogs.com/yplong/p/5381475.html
Day31使用多態代替條件語句 http://www.cnblogs.com/yplong/p/5381497.html