Legacy Code Improvement Guide: Refactoring for Maintenance Development is a book I read.
It's a must-read for anyone facing legacy code.
As a prerequisite, I feel that a certain level of ability to write tests is required.
- A seam is a place where you can change the behavior of the program even if you cannot directly edit that location.
- Every seam has an enabling point. At the enabling point, you can decide which behavior to use.