Refactoring: Improving the Design of Existing Code (2nd Edition) Martin Fowler

This eagerly awaited new edition has been fully updated to reflect crucial changes in the programming landscape. Like the original, this edition explains what refactoring is; why you should refactor; how to recognize code that needs refactoring; and how to actually do it successfully, no matter what language you use.

eBay