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

  • 购买积分:14 如何计算积分?
  • 作  者:马丁·福勒(MartinFowler),肯特·贝克(KentBeck),约翰·布兰特(JohnBrant),威廉·奥迪克(WilliamOpdyke),唐·罗伯茨(DonRoberts)编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2011
  • ISBN:9787121134500
  • 页数:430 页
图书介绍:重构,一言以蔽之,就是在不改变外部行为的前提下,有条不紊地改善代码。多年前,正是本书原版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分。本书也因此成为与《设计模式》齐名的经典著作,被译为中、德、俄、日等众多语言,在世界范围内畅销不衰。

Chapter 1 Refactoring,a First Example(新增批注共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 with Polymorphism 30

Final Thoughts 41

Chapter 2 Principles in Refactoring(新增批注共1 1条) 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 Martin Fowler)(新增批注共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 Calls Simpler(新增批注共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 with Generalization(新增批注共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 Martin Fowler)(新增批注共11条) 349

Tease Apart Inheritance 351

Convert Procedural Design to Objects 358

Separate Domain from Presentation 363

Extract Hierarchy 367

Chapter 13 Refaetoring,Reuse,and Reality(by William Opdyke)(新增批注共8条) 373

A Reality Check 374

Why Are Developers Reluctant to Refactor Their Programs? 375

A Reality Check(Revisited) 388

Resources and References for Refactoring 389

Implications Regarding Software Reuse and Technology Transfer 390

A Final Note 391

References 391

Chapter 14 Refactoring Tools(by Don Roberts and John Brant) 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