内容简介
《重構 改善既有代碼的設計》是一本由Martin Fowler所著的经典书籍,旨在帮助开发者通过重构技术改善代码质量。书中详细介绍了重构的基本概念、原则和实践方法,并通过大量实例展示了如何在实际项目中应用这些技术。
书中不仅涵盖了代码重构的各个方面,还深入探讨了如何识别代码中的坏味道,以及如何通过重构来消除这些坏味道。此外,书中还介绍了重构与设计模式、测试驱动开发(TDD)等现代软件开发实践的关系。
目录
目錄
重構列表
扉頁
版權
版權聲明
重構的重新認識(再版序)
重構的生活方式(譯序)
序
1.1 起點
1.2 重構的第一步
1.3 分解並重組statement()
1.4 運用多態取代與價格相關的條件邏輯
1.5 結語
第1章 重構,第一個案例
2.1 何謂重構
2.2 為何重構
2.3 何時重構
2.4 怎麼對經理說
2.5 重構的難題
2.6 重構與設計
2.7 重構與性能
2.8 重構起源何處
第2章 重構原則
3.1 Duplicated Code(重複代碼)
3.2 Long Method(過長函數)
3.3 Large Class(過大的類)
3.4 Long Parameter List(過長參數列)
3.5 Divergent Change(發散式變化)
3.6 Shotgun Surgery(霰彈式修改)
3.7 Feature Envy(依戀情結)
3.8 Data CIumps(數據泥團)
3.9 Primitive Obsession(基本類型偏執)
3.10 Switch Statements(switch驚悚現身)
3.11 Parallel Inheritance Hierarchies(平行繼承體系)
3.12 Lazy CIass(冗贅類)
3.13 Speculative Generality(誇誇其談未來性)
3.14 Temporary Field(令人迷惑的暫時字段)
3.15 Message Chains(過度耦合的消息鏈)
3.16 Middle Man(中間人)
3.17 Inappropriate Intimacy(狎暱關係)
3.18 Alternative Classes with Different Interfaces (異曲同工的類)
3.19 Incomplete Library Class(不完美的庫類)
3.20 Data Class(純稚的數據類)
3.21 Refused Bequest(被拒絕的遺贈)
3.22 Comments(過多的註釋)
第3章 代碼的壞味道
4.1 自測試代碼的價值
4.2 JUnit測試框架
4.3 添加更多測試
第4章 構築測試體系
5.1 重構的記錄格式
5.2 尋找引用點
5.3 這些重構手法有多成熟
第5章 重構列表
6.1 Extract Method(提煉函數)
6.2 Inline Method(內聯函數)
6.3 Inline Temp(內聯臨時變量)
6.4 Replace Temp with Query(以查詢取代臨時變量)
6.5 Introduce Explaining Variable(引入解釋性變量)
6.6 Split Temporary Variable(分解臨時變量)
6.7 Remove Assignments to Parameters(移除對參數的賦值)
6.8 Replace Method with Method Object(以函數對像取代函數)
6.9 Substitute Algorithm(替換算法)
第6章 重新組織函數
7.1 Move Method(搬移函數)
7.2 Move Field(搬移字段)
7.3 Extract Class(提煉類)
7.4 Inline Class(將類內聯化)
7.5 Hide Delegate(隱藏「委託關係」 )
7.6 Remove Middle Man(移除中間人)
7.7 Introduce Foreign Method(引入外加函數)
7.8 Introduce Local Extension(引入本地擴展)
第7章 在對像之間搬移特性
8.1 Self Encapsulate Field(自封裝字段)
8.2 Replace Data Value with Object(以對像取代數據值)
8.3 Change Value to Reference(將值對像改為引用對像)
8.4 Change Reference to Value(將引用對像改為值對像)
8.5 Replace Array with Object(以對像取代數組)
8.6 Duplicate Observed Data(複製「被監視數據」)
8.7 Change Unidirectional Association to Bidirectional (將單向關聯改為雙向關聯)
8.8 Change Bidirectional Association to Unidirectional (將雙向關聯改為單向關聯)
8.9 Replace Magic Number with Symbolic Constant (以字面常量取代魔法數)
8.10 Encapsulate Field(封裝字段)
8.11 Encapsulate Collection(封裝集合)
8.12 Replace Record with Data Class(以數據類取代記錄)
8.13 Replace Type Code with Class(以類取代類型碼)
8.14 Replace Type Code with Subclasses(以子類取代類型碼)
8.15 Replace Type Code with State/Strategy (以State/Strategy取代類型碼)
8.16 Replace Subclass with Fields(以字段取代子類)
第8章 重新組織數據
9.1 Decompose Conditional(分解條件表達式)
9.2 Consolidate Conditional Expression(合併條件表達式)
9.3 Consolidate Duplicate Conditional Fragments (合併重複的條件片段)
9.4 Remove Control Flag(移除控制標記)
9.5 Replace Nested Conditional with Guard Clauses (以衛語句取代嵌套條件表達式)
9.6 Replace Conditional with Polymorphism (以多態取代條件表達式)
9.7 Introduce Null Object(引入Null對像)
9.8 Introduce Assertion(引入斷言)
第9章 簡化條件表達式
10.1 Rename Method(函數改名)
10.2 Add Parameter(添加參數)
10.3 Remove Parameter(移除參數)
10.4 Separate Query from Modifier (將查詢函數和修改函數分離)
10.5 Parameterize Method(令函數攜帶參數)
10.6 Replace Parameter with Explicit Methods (以明確函數取代參數)
10.7 Preserve Whole Object(保持對像完整)
10.8 Replace Parameter with Methods(以函數取代參數)
10.9 Introduce Parameter Object(引入參數對像)
10.10 Remove Setting Method(移除設值函數)
10.11 Hide Method(隱藏函數)
10.12 Replace Constructor with Factory Method (以工廠函數取代構造函數)
10.13 Encapsulate Downcast(封裝向下轉型)
10.14 Replace Error Code with Exception (以異常取代錯誤碼)
10.15 Replace Exception with Test(以測試取代異常)
第10章 簡化函數調用
11.1 Pull Up Field(字段上移)
11.2 Pull Up Method(函數上移)
11.3 Pull Up Constructor Body(構造函數本體上移)
11.4 Push Down Method(函數下移)
11.5 Push Down Field(字段下移)
11.6 Extract Subclass(提煉子類)
11.7 Extract Superclass(提煉超類)
11.8 Extract Interface(提煉接口)
11.9 Collapse Hierarchy(折疊繼承體系)
11.10 Form Template Method(塑造模板函數)
11.11 Replace Inheritance with Delegation (以委託取代繼承)
11.12 Replace Delegation with Inheritance (以繼承取代委託)
第11章 處理概括關係
12.1 Tease Apart Inheritance(梳理並分解繼承體系)
12.2 Convert Procedural Design to Objects (將過程化設計轉化為對像設計)
12.3 Separate Domain from Presentation (將領域和表述/顯示分離)
12.4 Extract Hierarchy(提煉繼承體系)
第12章 大型重構
13.1 現實的檢驗
13.2 為什麼開發者不願意重構他們的程序
13.3 再論現實的檢驗
13.4 重構的資源和參考資料
13.5 從重構聯想到軟件復用和技術傳播
13.6 小結
13.7 參考文獻
第13章 重構,復用與現實
14.1 使用工具進行重構
14.2 重構工具的技術標準
14.3 重構工具的實用標準
14.4 小結
第14章 重構工具
第15章 總結
參考書目
要點列表
代碼的壞味道
您当前的等级为
登录后免费下载登录
小黑屋反思中,不准下载!
评论后刷新页面下载评论
支付¥以后下载
请先登录
您今天的下载次数(次)用完了,请明天再来
支付积分以后下载立即支付
支付以后下载立即支付
您当前的用户组不允许下载升级会员
您已获得下载权限
您可以每天下载资源次,今日剩余次
免责申明:
1. 本站分享的所有书籍均来源于自互联网,我们只进行收集整理,并不对书籍内容进行更改。
2. 部分书籍中可能有书籍压制者放置的广告,这并不是本站所为,请注意甄别。
3. 我们分享这些书籍,纯粹是出于知识分享的热情,以及对互联网分享精神的高度认同和践行,不以盈利为目的。
4. 本站分享的所有书籍,仅供个人学习研究使用,请勿用于任何商业用途,否则产生的一切法律纠纷与本站无关。
5. 如果这些书籍让你有所收获,在条件允许的情况下,请一定购买正版书籍,这是对创作者最好的支持。
6. 如果您是此书籍的版权所有者,且您不希望此作品出现在本站,请联系我们,我们将在收到您的请求后48小时内予以删除。