Acabo de leer los primeros cuatro capítulos de Refactoring: Improving the Design of Existing Code, me embarqué en mi primera refactorización y casi inmediatamente llegué a un obstáculo. Se deriva del requisito de que antes de comenzar la refactorización, debe realizar pruebas unitarias alrededor del código heredado. Eso le permite estar seguro de que su refactorización no cambió lo que hizo el código original (solo cómo lo hizo).Refactorización práctica usando pruebas unitarias
Así que mi primera pregunta es esta: ¿cómo puedo probar la unidad de un método en el código heredado? ¿Cómo puedo poner una prueba unitaria alrededor de un método de 500 líneas (si tengo suerte) que no hace solo una tarea? Me parece que tendré que refactorizar mi código heredado solo para que pueda ser comprobado por la unidad.
¿Alguien tiene alguna experiencia en refactorizar usando pruebas unitarias? Y, si es así, ¿tiene algún ejemplo práctico que pueda compartir conmigo?
Mi segunda pregunta es algo difícil de explicar. Aquí hay un ejemplo: quiero refactorizar un método heredado que rellena un objeto de un registro de base de datos. ¿No tendría que escribir una prueba unitaria que compare un objeto recuperado utilizando el método anterior, con un objeto recuperado utilizando mi método refactorizado? De lo contrario, ¿cómo sabría que mi método refactorizado produce los mismos resultados que el método anterior? Si eso es cierto, ¿cuánto tiempo dejo el viejo método obsoleto en el código fuente? ¿Simplemente lo golpeo después de probar algunos registros diferentes? O bien, ¿debo guardarlo por un tiempo en caso de encontrar un error en mi código refactorizado?
Por último, ya que un par de personas han preguntado ... el código heredado se escribió originalmente en VB6 y luego se transfirió a VB.NET con cambios mínimos de arquitectura.
Una gran pregunta. También puede probar Katas, que le ayuda a hacerse un hábito para escribir un buen código y cómo puede escribir código probado en unidades: https://github.com/garora/TDD-Katas –