Refactoring: Improving the Design of Existing Code by Martin Fowler, John Brant, Kent Beck, Don Roberts, William Opdyke (Hardback, 1999)