Working Effectively with Legacy Code by Michael Features.