Refactoring is about improving the design of existing code. It is the process of changing a
software system in such a way that it does not alter the external behavior of the code yet
improves its internal structure. With refactoring you can even take a bad design and rework it
into a good one. This book offers a thorough discussion of the principles of refactoring
including where to spot opportunities for refactoring and how to set up the required tests.
There is also a catalog of more than 40 proven refactorings with details as to when and why to
use the refactoring step by step instructions for implementing it and an example illustrating
how it works The book is written using Java as its principle language but the ideas are
applicable to any OO language.