Refactoring: Improving the Design of Existing Code
Martin Fowler & Kent Beck & John Brant & William Opdyke & Don Roberts