Este es un resumen de los pasos para refactorizar un algoritmo con polimorfismo. Asumimos que se aplica sobre los parameter objects que cumplen “Tell Don’t Ask” en un algoritmo realizado con objetos de responsabilidad única.
Los pasos son:
- Identifique dónde se puede aplicar el polimorfismo
- Cree una clase para cada rama del condicional
- Actualice las pruebas unitarias para que usen las clases concretas
- Elimine las propiedades innecesarias
1. Identifique dónde se puede aplicar el polimorfismo
Busque un sitio donde se tome decisiones con base en una propiedad bool o enum del Parameter Object, como la siguiente:
2. Cree una clase para cada rama del condicional
Primero, haga abstracta a la clase original y a su propiedad. Comente el código que llevaremos a otras clases hijas:
Luego, cree una clase hija para cada rama del condicional. En este caso son dos clases. Verifique que sean clases públicas ubicadas en el namespace correcto:
¡Recuerde eliminar el código que comentó en la clase padre! No queremos dejar comentarios innecesarios.
3. Actualice las pruebas unitarias para que usen las clases concretas
4. Elimine las propiedades innecesarias
Cuando ya no se utilicen, elimine las propiedades de tipos (bool, enum). Así, las pruebas unitarias ya no requieren asignar ese tipo ya que al crear la clase hija está siendo explícita en ese tipo:
Así, hemos eliminado los condicionales que hacen que nuestros algoritmos sean frágiles.