Refactoring-Improving the Design of Existing Code-Martin Fowler-Addison-Wesley
Increasingly, software system professionals are discovering just how difficult it is to work with these inherited, non-optimal applications. Referred to as refactoring, these practices have remained in the domain of experts because no attempt has been made to transcribe the lore into a form that all developers could use.. until now.