¿Qué es?
Propuesta por Joshua Kerievsky en su libro Refactoring to patterns
Es una técnica que se aplica para Refactorizar o aplicar cambios más complejos donde no podemos no basta con aplicar uno o varios Refactoring automáticos sin que se rompan los tests.
Esta técnica se usa para implementar cambios incompatibles hacia atrás de manera segura (sin romper tests)
Consta de tres fases:
- Expandir: Creación de una nueva API (que vive en paralelo). Los nuevos clientes que necesitan esta la podrán empezar a consumir y no rompemos los otros que aún no la necesitan
- Migrar Enlazamos los antiguos y nuevos clientes a la Nueva API llamando desde el viejo al NUEVO (que contiene la funcionalidad ya existente más la nueva)
- Contraer Eliminar el viejo pues ya es irrelevante. Se puede hacer por medio de un inline o haciendo renames.