《重构 改善既有代码的设计 英文注释版》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)福勒(Martin Fowler)著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2008
  • ISBN:7115168040
  • 页数:471 页
图书介绍:面向对象大师Martin Fowler及其专家级合作者在将40多种常用解决方案转化成模式后,为我们提供了这本能够应用于任何一种企业应用平台的、关于解决方案的、不可或缺的图书。本书叙述深入浅出,采用大量UML图进一步阐明有关概念。前面介绍企业应用的背景知识,如分层架构、Web表现、业务逻辑、数据库映射、并发、会话、分布策略等。在此基础上,随后的各章分别对与这些背景知识相关的设计模式进行了详细的介绍,并配以详细的Java代码或C#代码示例。

Chapter 1: Refactoring, a First Example重构,第一个例子 1

The Starting Point起点 1

The First Step in Refactoring重构第一步 7

Decomposing and Redistributing the Statement Method分解并重组statement方法 8

Replacing the Conditional Logic on Price Code with Polymorphism用多态代替价格条件逻辑代码 34

Final Thoughts结语 52

Chapter 2: Principles in Refactoring重构原则 53

Defining Refactoring何谓重构 53

Why Should You Refactor?为何重构 55

When Should You Refactor?何时重构 57

What Do I Tell My Manager?怎样说服经理 60

Problems with Refactoring重构的问题 62

Refactoring and Design重构与设计 66

Refactoring and Performance重构与性能 69

Where Did Refactoring Come From?重构的起源 71

Chapter 3: Bad Smells in Code(byKent Beck and Martin Fowler)代码坏味 75

Duplicated Code重复代码 76

Long Method过长方法 76

Large Class过长类 78

Long Parameter List过长参数列表 78

Divergent Change发散式变化 79

Shotgun Surgery霰弹式修改 80

Feature Envy特性依恋 80

Data Clumps数据泥团 81

Primitive Obsession基本类型偏执 81

Switch Statements switch语句 82

Parallel Inheritance Hierarchies平行继承体系 83

Lazy Class 冗余类 83

Speculative Generality理论上的一般性 83

Temporary Field临时字段 84

Message Chains消息链 84

Middle Man中间人 85

Inappropriate Intimacy过度亲密 85

Alternative Classes with Different Interfaces接口不同的等效类 85

Incomplete Library Class不完整的库类 86

Data Class数据类 86

Refused Bequest拒绝继承 87

Comments注释过多 87

Chapter 4: Building Tests构建测试 89

The Value of Self-testing Code自测试代码的重要性 89

The JUnit Testing Framework JUnit测试框架 91

Adding More Tests添加更多测试 97

Chapter 5: Toward a Catalog of Refactorings重构目录 103

Format of the Refactorings重构描述的格式 103

Finding References寻找引用 105

How Mature Are These Refactorings?这些重构的成熟度如何 106

Chapter 6: Composing Methods组合方法 109

Extract Method提取方法 110

Inline Method内联方法 117

Inline Temp内联临时变量 119

Replace Temp with Query①用查询方法代替临时变量 120

Introduce Explaining Variable引入解释性变量 124

Split Temporary Variable分离临时变量 128

Remove Assignments to Parameters去除参数赋值 131

Replace Method with Method Object用方法对象代替方法 135

Substitute Algorithm替换算法 139

Chapter 7: Moving Features Between Objects在对象之间移动特性 141

Move Method移动方法 142

Move Field移动字段 146

Extract Class提取类 149

Inline Class内联类 154

Hide Delegate隐藏委托类 157

Remove Middle Man去除中间人 160

Introduce Foreign Method引入外加方法 162

Introduce Local Extension引入本地扩展类 164

Chapter 8: Organizing Data组织数据 169

Self Encapsulate Field自封装字段 171

Replace Data Value with Object用对象代替数据值 175

Change Value to Reference将值对象改为引用对象 179

Change Reference to Value将引用对象改为值对象 183

Replace Array with Object用对象代替数组 186

Duplicate Observed Data重复被观察数据 189

Change Unidirectional Association to Bidirectional将单向关联改为双向 197

Change Bidirectional Association to Unidirectional将双向关联改为单向 200

Replace Magic Number with Symbolic Constant用字面常量代替魔数 204

Encapsulate Field封装字段 206

Encapsulate Collection封装集合 208

Replace Record with Data Class用数据类代替记录 217

Replace Type Code with Class用类代替类型码 218

Replace Type Code with Subclasses用子类代替类型码 223

Replace Type Code with State/Strategy用State/Strategy代替类型码 227

Replace Subclass with Fields用字段代替子类 232

Chapter 9: Simplifying Conditional Expressions简化条件语句 237

Decompose Conditional分解条件语句 238

Consolidate Conditional Expression合并条件语句 240

Consolidate Duplicate Conditional Fragments合并重复的条件片段 243

Remove Control Flag去除控制标志 245

Replace Nested Conditional with Guard Clauses用守卫语句代替嵌套条件语句 250

Replace Conditional with polymorphism用多态代替条件语句 255

Introduce Null Object引入Null对象 260

Introduce Assertion引入断言 267

Chapter 10: Making Method Calls Simpler简化方法调用 271

Rename Method重命名方法 273

Add Parameter添加参数 275

Remove Parameter去除参数 277

Separate Query from Modifier将查询方法与修改方法分离 279

Parameterize Method参数化方法 283

Replace Parameter with Explicit Methods用显式方法代替参数 285

Preserve Whole Object保持对象完整 288

Replace Parameter with Method用方法代替参数 292

Introduce Parameter Object引入参数对象 295

Remove Setting Method去除设置方法 300

Hide Method隐藏方法 303

Replace Constructor with Factory Method用工厂方法代替构造器 304

Encapsulate Downcast封装向下转型 308

Replace Error Code with Exception用异常代替错误码 310

Replace Exception with Test用测试代替异常 315

Chapter 11: Dealing with Generalization处理泛化关系 319

Pull Up Field上移字段 320

Pull Up Method上移方法 322

Pull Up Constructor Body上移构造器主体 325

Push Down Method下移方法 328

Push Down Field下移字段 329

Extract Subclass提取子类 330

Extract Superclass提取超类 336

Extract Interface提取接口 341

Collapse Hierarchy合并继承层次 344

Form Template Method形成Template Method 345

Replace Inheritance with Delegation用委托代替继承 352

Replace Delegation with Inheritance用继承代替委托 355

Chapter 12: Big Refactorings (byKent Beck and Martin Fowler)大型重构 359

Tease Apart Inheritance分解继承层次 362

Convert Procedural Design to Objects将过程式设计转换为面向对象 368

Separate Domain from Presentation将领域逻辑与表现分离 370

Extract Hierarchy提取继承层次 375

Chapter 13: Refactoring, Reuse, and Realiry(byWilliam Opdyke)重构,复用与现实 379

A Reality Check现实的检验 380

Why Are Developers Reluctant to Refactor Their Programs?开发人员为何不愿重构程序 381

A Realiry Check (Revisited)再谈现实的检验 394

Resources and References for Refactoring重构的资源和参考文献 394

Implications Regarding Software Reuse and Technology Transfer对软件复用与技术传播的意义 395

A Final Note结语 397

References参考文献 397

Chapter 14: Refactoring Tools (byDon Roberts and John Brant)重构工具 401

Refactoring with a Tool使用工具重构 401

Technical Criteria for a Refactoring Tool重构工具的技术标准 403

Practical Criteria for a Refactoring Tool重构工具的实用标准 405

Wrap Up结语 407

Chapter 15: Putting It All Together(byKent Beck)集大成 409

References参考文献 413

List of Soundbites要点列表 417

Updates更新内容 419

Index索引 459