Why I recommend "Working Effectively with Legacy Code" — 5 years ago
I think it a great book about how to work with old, untested, cryptic or just bad code with the goal of bring it under test. Unfortunately I think the book is two to three times longer than it needs to be. The suggestions that it makes are invaluable, but the examples start to seem repetitive. I also think it might do well to not generalize so much and take advantage of some the tools that are out there today.
In summary I think it’s essential reading if you work with legacy code, but it does lend itself to liberal skimming.