Malos olores: Lógica condicional


Es difícil de razonar ya que tenemos que considerar múltiples caminos a través del código. Es tentador añadir casos de uso especiales en lugar de desarrollar un caso de uso general. A veces es usada como un mal sustituto de mecanismos orientados a objetos.

Los malos olores derivados de un mal uso de la lógica condicional son:

Null Check

Qué hacer

Recompensas

Contraindicaciones

Complicated Boolean Expression

Qué hacer

Aplica la ley de DeMorgan.

Recompensas

Mejora la comunicación.

Contraindicaciones

Puede que encuentres otras formas de simplificar la expresión o que al reescribirla comuniques más con menos código.

Special Case

Síntomas

Qué hacer

Recompensas

Contraindicaciones

Simulated Inheritance (Switch Statement)

Síntomas

Qué hacer

No simules herencia. Utiliza mecanismos nativos del propio lenguaje.

Si un switch para la misma condición aparece en diferentes sitios, normalmente está utilizando un type code. Reemplázalo con polimorfismo:

  1. Saca fuera el código para cada rama con Extract Method.
  2. Mueve el código a la clase correcta con Move Method.
  3. Configura la estructura de herencia con Replace Type Code with Subclass o Replace Type Code with State/Strategy.
  4. Elimina los condicionales con Replace Conditional with Polymorphism.

Si las condiciones ocurren dentro de una única clase, puedes reemplazar la lógica condicional con Replace Parameter with Explicit Method o Introduce Null Object.

Recompensas

Contraindicaciones

2019-03-19
Escrito por Samuel de Vega.
Etiquetas