| | Copyright |
| | Advance Praise for Refactoring to Patterns |
| | The Addison-Wesley Signature Series |
| | | The Addison-Wesley Signature Series Signers: Kent Beck and Martin Fowler |
| | Foreword |
| | Foreword |
| | Preface |
| | | What Is This Book About? |
| | | What Are the Goals of This Book? |
| | | Who Should Read This Book? |
| | | What Background Do You Need? |
| | | How to Use This Book |
| | | The History of This Book |
| | | Standing on the Shoulders of Giants |
| | | Acknowledgments |
| | Chapter 1. Why I Wrote This Book |
| | | Over-Engineering |
| | | The Patterns Panacea |
| | | Under-Engineering |
| | | Test-Driven Development and Continuous Refactoring |
| | | Refactoring and Patterns |
| | | Evolutionary Design |
| | Chapter 2. Refactoring |
| | | What Is Refactoring? |
| | | What Motivates Us to Refactor? |
| | | Many Eyes |
| | | Human-Readable Code |
| | | Keeping It Clean |
| | | Small Steps |
| | | Design Debt |
| | | Evolving a New Architecture |
| | | Composite and Test-Driven Refactorings |
| | | The Benefits of Composite Refactorings |
| | | Refactoring Tools |
| | Chapter 3. Patterns |
| | | What Is a Pattern? |
| | | Patterns Happy |
| | | There Are Many Ways to Implement a Pattern |
| | | Refactoring to, towards, and away from Patterns |
| | | Do Patterns Make Code More Complex? |
| | | Pattern Knowledge |
| | | Up-Front Design with Patterns |
| | Chapter 4. Code Smells |
| | | Duplicated Code |
| | | Long Method |
| | | Conditional Complexity |
| | | Primitive Obsession |
| | | Indecent Exposure |
| | | Solution Sprawl |
| | | Alternative Classes with Different Interfaces |
| | | Lazy Class |
| | | Large Class |
| | | Switch Statements |
| | | Combinatorial Explosion |
| | | Oddball Solution |
| | Chapter 5. A Catalog of Refactorings to Patterns |
| | | Format of the Refactorings |
| | | Projects Referenced in This Catalog |
| | | A Starting Point |
| | | A Study Sequence |
| | Chapter 6. Creation |
| | | Replace Constructors with Creation Methods |
| | | Move Creation Knowledge to Factory |
| | | Encapsulate Classes with Factory |
| | | Introduce Polymorphic Creation with Factory Method |
| | | Encapsulate Composite with Builder |
| | | Inline Singleton |
| | Chapter 7. Simplification |
| | | Compose Method |
| | | Replace Conditional Logic with Strategy |
| | | Move Embellishment to Decorator |
| | | Replace State-Altering Conditionals with State |
| | | Replace Implicit Tree with Composite |
| | | Replace Conditional Dispatcher with Command |
| | Chapter 8. Generalization |
| | | Form Template Method |
| | | Extract Composite |
| | | Replace One/Many Distinctions with Composite |
| | | Replace Hard-Coded Notifications with Observer |
| | | Unify Interfaces with Adapter |
| | | Extract Adapter |
| | | Replace Implicit Language with Interpreter |
| | Chapter 9. Protection |
| | | Replace Type Code with Class |
| | | Limit Instantiation with Singleton |
| | | Introduce Null Object |
| | Chapter 10. Accumulation |
| | | Move Accumulation to Collecting Parameter |
| | | Move Accumulation to Visitor |
| | Chapter 11. Utilities |
| | | Chain Constructors |
| | | Unify Interfaces |
| | | Extract Parameter |
| | Afterword |
| | References |
| | Inside Front Cover |
| | | List of Refactorings |
| | | Refactoring Directions |
| | Inside Back Cover |
| | | Code Smells |
| | | A Study Sequence |