重构:改善既有代码的设计(评注版)

重构:改善既有代码的设计(评注版)
作 者: Martin Fowler Kent Beck John Brant William Opdyke Don Roberts
出版社: 电子工业出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 软件工程/开发项目管理
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Martin Fowler世界级软件开发大师,在面向对象分析设计、UML、模式、XP和重构等领域都有卓越贡献,曾任著名软件开发咨询公司ThoughtWorks的首席科学家。他的多部著作《分析模式》、《UML精悴》和《企业应用架构模式》等都已经成为脍炙人口的经典。

内容简介

重构,一言以蔽之,就是在不改变外部行为的前提下,有条不紊地改善代码。多年前,正是本书原版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分。《重构:改善既有代码的设计(评注版)》也因此成为与《设计模式》齐名的经典著作,被译为中、德、俄、日等众多语言,在世界范围内畅销不衰。Martin Fowler等著的《重构:改善既有代码的设计(评注版)》凝聚了软件开发社区专家多年摸索而获得的宝贵经验,拥有不因时光流逝而磨灭的价值。今天,无论是重构本身,业界对重构的理解,还是开发工具对重构的支持力度,都与本书最初出版时不可同日而语,但书中所蕴涵的意味和精华,依然值得反复咀嚼,而且往往能够常读常新。《重构:改善既有代码的设计(评注版)》力邀国内资深专家执笔,在英文原著基础上增加中文点评与注释,旨在以先行者的学研心得与实践感悟,对读者阅读与学习加以点拨、指明捷径。

图书目录

Chapter 1 Refactoring, a FirstExample(新增批注共21条) 1

The Starting Point 2

The First Step in Refactoring 9

Decomposing and Redistributing the Statement Method 10

Replacing the Conditional Logic on Price Code withPolymorphism 30

Final Thoughts 41

Chapter 2 Principles in Refactoring(新增批注共11条) 43

Defining Refactoring 43

Why Should You Refactor? 45

When Should You Refactor? 48

What DO I Tell My Manager? 51

Problems with Refactoring 53

Refactoring and Design 57

Refactoring and Performance 60

Where Did Refactoring Come From? 61

Chapter 3 Bad Smells in Code (by Kent Beck and MartinFowler)

(新增批注共17条) 65

Duplicated Code 66

Long Method 67

Large Class 70

Long Parameter List 71

Divergent Change 73

Shotgun Surgery 74

Feature Envy 74

Data Clumps 75

Primitive Obsession 76

Switch Statements 76

Parallel Inheritance Hierarchies 77

Lazy Class 77

Speculative Generality 78

Temporary Field 78

Message Chains 79

Middle Man 81

Inappropriate Intimacy 82

Alternative Classes with Different Interfaces 82

Incomplete Library Class 83

Data Class 83

Refused Bequest 84

Comments 84

Chapter 4 Building Tests(新增批注共2条) 87

The Value of Self.testing Code 87

The JUnit Testing Framework 89

Adding More Tests 97

Chapter 5 Toward a Catalog of Refactorings

(新增批注共1条) 103

Format of the Refactorings 103

Finding References 105

How Mature Are These Refactorings? 106

Chapter 6 Composing Methods(新增批注共9条) 109

Extract Method 110

Inline Method 117

Inline Temp 118

Replace Temp with Query 119

Introduce Explaining Variable 124

Split Temporary Variable 128

Remove Assignments to Parameters 130

Replace Method with Method Object 134

Substitute Algorithm 137

Chapter 7 Moving Features Between Objects

(新增批注共12条) 139

Move Method 139

Move Field 144

Extract Class 147

Inline Class 151

Hide Delegate 153

Remove Middle Man 156

Introduce Foreign Method 158

Introduce Local Extension 160

Chapter 8 Organizing Data(新增批注共9条) 167

Self Encapsulate Field 168

Replace Data Value with Object 172

Change Value to Reference 175

Change Reference to Value 179

Replace Array with Object 181

Duplicate Observed Data 186

Change Unidirectional Association to Bidirectional 194

Change Bidirectional Association to Unidirectional 197

Replace Magic Number with Symbolic Constant 200

Encapsulate Field 201

Encapsulate Collection 202

Replace Record with Data Class 211

Replace Type Code with Class 211

Replace Type Code with Subclasses 217

Replace Type Code with State/Strategy 220

Replace Subclass with Fields 225

Chapter 9 Simplifying Conditional Expressions

(新增批注共6条) 229

Decompose Conditional 229

Consolidate Conditional Expression 231

Consolidate Duplicate Conditional Fragments 234

Remove Contr01 Flag 236

Replace Nested Conditional with Guard Clauses 240

Replace Conditional with Polymorphism 245

Introduce Null Object 249

Introduce Assertion 258

Chapter 10 Making Method CallsSimpler(新增批注共14条) 263

Rename Method 264

Add Parameter 266

Remove Parameter 267

Separate Query from Modifier 269

Parameterize Method 273

Replace Parameter with Explicit Methods 277

Preserve Whole Object 280

Replace Parameter with Method 283

Introduce Parameter Object 286

Remove Setting Method 293

Hide Method 296

Replace Constructor with Factory Method 297

Encapsulate Downcast 301

Replace Error Code with Exception 303

Replace Exception With Test 308

Chapter 11 Dealing withGeneralization(新增批注共6条) 313

Pull Up Field 313

Pull Up Method 315

Pull Up Constructor Body 317

Push Down Method 320

Push Down Field 321

Extract Subclass 322

Extract Superclass 327

Extract Interface 331

Collapse Hierarchy 334

Form Template Method 335

Replace Inheritance with Delegation 342

Replace Delegation with Inheritance 345

Chapter 12 Big Refactorings (by Kent Beck and MartinFowler)

(新增批注共11条) 349

Tease Apart Inheritance 351

Convert Procedural Design to Objects 358

Separate Domain from Presentation 363

Extract Hierarchy 367

Chapter 13 Refactoring, Reuse, and Reality (by WilliamOpdyke)

(新增批注共8条) 373

A Reality Check 374

Why Are Developers Reluctant to Refactor TheirPrograms? 375

A Reality Check (Revisited) 388

Resources and References for Refactoring 389

Implications Regarding Software Reuse and TechnologyTransfer 390

A Final Note 391

References 391

Chapter 14 Refactoring Tools (by Don Roberts and JohnBrant) 395

Refactoring with a Tool 395

Technical Criteria for a Refactoring Tool 397

Practical Criteria for a Refactoring Tool 399

Wrap Up 401

Chapter 15 Putting It All Together (by Kent Beck)

(新增批注共2条) 403

References 407

List of Soundbites 411

Index 413