Refactoring

by Martin Fowler

2nd edition