Refactoring: Improving the Design of Existing Code, 2nd Edition By: Kent Beck, Martin Fowler Read more