Foreword by Robert C. Martin
Preface
Introduction
PART I: The Mechanics of Change
Chapter 1: Changing Software
Four Reasons to Change Software
Risky Change
Chapter 2: Working with Feedback
What Is Unit Testing?
Higher-Level Testing
Test Coverings
The Legacy Code Change Algorithm
Chapter 3: Sensing and Separation
Faking Collaborators
Chapter 4: The Seam Model
A Huge Sheet of Text
Seams
Seam Types
Chapter 5: Tools
Automated Refactoring Tools
Mock Objects
Unit-Testing Harnesses
General Test Harnesses
PART II: Changing Software
Chapter 6: I Don’t Have Much Time and I Have to Change It
Sprout Method
Sprout Class
Wrap Method
Wrap Class
Summary
Chapter 7: It Takes Forever to Make a Change
Understanding
Lag Time
Breaking Dependencies
Summary ...