Working Effectively with Legacy Code A field manual for changing code that has no tests, distilled from Michael C. Feathers' Working Effectively with Legacy Code . Use it to get untestable classes into a harness, pin down current behavior with characterization tests, and make changes one safe, verifiable step at a time — without resorting to a rewrite. Core Principle Legacy code is simply code without tests. Not old code, not ugly code — untested code: without tests you cannot know whether a change preserves behavior, so every edit is a gamble. The craft is breaking dependencies just enough t…