Feathers, Michael C. Working Effectively with Legacy Code. Upper Sadle River, NJ, USA: Prentice Hall, 2005. ISBN: 0131177052
This should really be called "how to unit test legacy code." However, despite the misleading title, I found it to be a useful read. It discusses many tools and techniques for how to write tests for legacy code, so you can make changes to it with confidence that you have not broken everything. As such, it is a very practical complement to Refactoring, which assumse that you already have tests in place.