Demonstrates how software practitioners can realize the benefits of refactoring. This book shows you where opportunities for refactoring typically can be found, and how to go about reworking a bad design into a good one. It provides a catalog of more than seventy proven refactorings with helpful pointers that teach you when to apply them.