Refactorizar es modificar tu código cubierto por pruebas, la reingeniería es modificar tu código y rezar. Más o menos esto es lo que dijo Hamlet D'Arcy en el Greach 2011 en Madrid. Y no puedo estar más de acuerdo, Una de las grandes cosas de tener tu código cubierto por pruebas, es que puede refactorizar ese código que no escribiste tan bien ( directamente lo escribiste mal, a mi me pasa mucho), sin tener que preocuparte de si va a seguir funcionando o no, porque sabes que funciona. Vale, esto es una verdad a medias, porque:

  1. Igual el test no está bien escrito.
  2. Igual lo tienes que probar a mano.
  3. Igual algo en lo que no habías pensado va mal.
Pero aún así, es mucho mejor que la certeza de que no tienes ni idea de si funciona como antes sin hacer una prueba manual. O mejor dicho, tienes la certeza de que algo irá mal, por eso lo pruebas, porque no eres perfecto y cometes errores. Y además esas pruebas estarán ahí en el futuro para seguir haciendo tu código más robusto.