Foreword
Preface
Introduction
Part I: The Mechanics of Change
Chapter 1. Changing Software
Chapter 2. Working with Feedback
Chapter 3. Sensing and Separation
Chapter 4. The Seam Model
Chapter 5. Tools
Part II: Changing Software
Chapter 6. I Don’t Have Much Time and I Have to Change It
Chapter 7. It Takes Forever to Make a Change
Chapter 8. How Do I Add a Feature?
Chapter 9. I Can’t Get This Class into a Test Harness
Chapter 10. I Can’t Run this Method in a Test Harness
Chapter 11. I Need to Make a Change. What Methods Should I Test?
Chapter 12. I Need to Make Many Changes in One Area. Do I Have to Break Dependencies for All the Classes Involved?
Chapter 13. I Need to Make a Change, but I Don’t Know What Tests to Write
Chapter 14. Dependencies on Libraries Are Killing Me
Chapter 15. My Application Is All API Calls
Chapter 16. I Don’t Understand the Code Well Enough to Change It
Chapter 17. My Application Has No Structure
Chapter 18. My Test Code is in the Way
Chapter 19. My Project is Not Object Oriented. How Do I Make Safe Changes?
Chapter 20. This Class Is Too Big and I Don’t Want It to Get Any Bigger
Chapter 21. I’m Changing the Same Code All Over the Place
Chapter 22. I Need to Change a Monster Method and I Can’t Write Tests for It
Chapter 23. How Do I Know That I’m Not Breaking Anything?
Chapter 24. We Feel Overwhelmed. It Isn’t Going to Get Any Better
Part III. Dependency-Breaking Technoiques
Chapter 25. Dependency-Breaking Techniques
Appendix: Refactoring