El libro de Martin Fowler "Refactoring" es la referencia clásica.