Tài liệu Refactoring: Improving the Design of Existing Code

Thảo luận trong 'Kế Toán - Kiểm Toán' bắt đầu bởi Thúy Viết Bài, 5/12/13.

  1. Thúy Viết Bài

    Thành viên vàng

    Bài viết:
    198,891
    Được thích:
    173
    Điểm thành tích:
    0
    Xu:
    0Xu
    Foreword 6
    Preface . 8
    What Is Refactoring? . 9
    What's in This Book? . 9
    Who Should Read This Book? . 10
    Building on the Foundations Laid by Others 10
    Acknowledgments 11

    Chapter 1. Refactoring, a First Example 13
    The Starting Point . 13
    The First Step in Refactoring 17
    Decomposing and Redistributing the Statement Method 18
    Replacing the Conditional Logic on Price Code with Polymorphism . 35
    Final Thoughts 44
    Chapter 2. Principles in Refactoring 46
    Defining Refactoring 46
    Why Should You Refactor? 47
    Refactoring Helps You Find Bugs . 48
    When Should You Refactor? 49
    What Do I Tell My Manager? 52
    Problems with Refactoring 54
    Refactoring and Design . 57
    Refactoring and Performance 59
    Where Did Refactoring Come From? 60
    Chapter 3. Bad Smells in Code 63
    Duplicated Code . 63
    Long Method . 64
    Large Class . 65
    Long Parameter List . 65
    Divergent Change 66
    Shotgun Surgery . 66
    Feature Envy . 66
    Data Clumps . 67
    Primitive Obsession . 67
    Switch Statements . 68
    Parallel Inheritance Hierarchies . 68
    Lazy Class . 68
    Speculative Generality . 68
    Temporary Field . 69
    Message Chains . 69
    Middle Man 69
    Inappropriate Intimacy . 70
    Alternative Classes with Different Interfaces . 70
    Incomplete Library Class . 70
    Data Class . 70
    Refused Bequest 71
    4
    Comments . 71
    Chapter 4. Building Tests 73
    The Value of Self-testing Code 73
    The JUnit Testing Framework 74
    Adding More Tests . 80
    Chapter 5. Toward a Catalog of Refactorings . 85
    Format of the Refactorings . 85
    Finding References 86
    How Mature Are These Refactorings? 87
    Chapter 6. Composing Methods 89
    Extract Method 89
    Inline Method . 95
    Inline Temp 96
    Replace Temp with Query 97
    Introduce Explaining Variable . 101
    Split Temporary Variable . 104
    Remove Assignments to Parameters . 107
    Replace Method with Method Object 110
    Substitute Algorithm . 113
    Chapter 7. Moving Features Between Objects 115
    Move Method 115
    Move Field . 119
    Extract Class . 122
    Inline Class 125
    Hide Delegate . 127
    Remove Middle Man 130
    Introduce Foreign Method . 131
    Introduce Local Extension . 133
    Chapter 8. Organizing Data 138
    Self Encapsulate Field . 138
    Replace Data Value with Object 141
    Change Value to Reference . 144
    Change Reference to Value . 148
    Replace Array with Object 150
    Duplicate Observed Data 153
    Change Unidirectional Association to Bidirectional 159
    Change Bidirectional Association to Unidirectional 162
    Replace Magic Number with Symbolic Constant 166
    Encapsulate Field . 167
    Encapsulate Collection 168
    Replace Record with Data Class . 175
    Replace Type Code with Class 176
    Replace Type Code with Subclasses . 181
    Replace Type Code with State/Strategy . 184
    Replace Subclass with Fields . 188
    Chapter 9. Simplifying Conditional Expressions . 192
    5
    Decompose Conditional 192
    Consolidate Conditional Expression . 194
    Consolidate Duplicate Conditional Fragments 196
    Remove Control Flag . 197
    Replace Nested Conditional with Guard Clauses . 201
    Replace Conditional with Polymorphism 205
    Introduce Null Object . 209
    Introduce Assertion 216
    Chapter 10. Making Method Calls Simpler . 220
    Rename Method . 221
    Add Parameter 222
    Remove Parameter 223
    Separate Query from Modifier 225
    Parameterize Method 228
    Replace Parameter with Explicit Methods 230
    Preserve Whole Object . 232
    Replace Parameter with Method . 235
    Introduce Parameter Object . 238
    Remove Setting Method 242
    Hide Method 245
    Replace Constructor with Factory Method . 246
    Encapsulate Downcast 249
    Replace Error Code with Exception 251
    Replace Exception with Test 255
    Chapter 11. Dealing with Generalization 259
    Pull Up Field 259
    Pull Up Method . 260
    Pull Up Constructor Body 263
    Push Down Method 266
    Push Down Field 266
    Extract Subclass . 267
    Extract Superclass . 272
    Extract Interface . 277
    Collapse Hierarchy . 279
    Form Template Method . 280
    Replace Inheritance with Delegation . 287
    Replace Delegation with Inheritance . 289
    Chapter 12. Big Refactorings . 293
    Tease Apart Inheritance 294
    Convert Procedural Design to Objects . 300
    Separate Domain from Presentation . 302
    Extract Hierarchy 306
    Chapter 13. Refactoring, Reuse, and Reality 311
    A Reality Check 311
    Why Are Developers Reluctant to Refactor Their Programs? 312
    A Reality Check (Revisited) 323
    6
    Resources and References for Refactoring . 323
    Implications Regarding Software Reuse and Technology Transfer . 324
    A Final Note . 325
    Endnotes 325
    Chapter 14. Refactoring Tools . 328
    Refactoring with a Tool 328
    Technical Criteria for a Refactoring Tool 329
    Practical Criteria for a Refactoring Tool 331
    Wrap Up . 332
    Chapter 15. Putting It All Together 333
    Bibliography . 336
    References 336
     

    Các file đính kèm: