Logotipo de ConstructiCat
CodeBust.
Explorar la sección ▾

Colapsar jerarquía.

Problema

Tienes una jerarquía de clases en la que una subclase es prácticamente igual que su superclase.

Solución

Fusiona la subclase y la superclase.

##Ejemplo

Antes
class Employee {
  String name;
  double monthlyCost;
}
class Salesman extends Employee {
}
Después
class Employee {
  String name;
  double monthlyCost;
}

##Por qué refactorizar

Tu programa ha crecido con el tiempo y una subclase y una superclase han llegado a ser prácticamente iguales. Se eliminó una funcionalidad de una subclase, se movió un método a la superclase... y ahora tienes dos clases casi idénticas.

##Ventajas

  • Se reduce la complejidad del programa. Menos clases significan menos cosas que mantener presentes en la cabeza y menos piezas móviles susceptibles de romperse de las que preocuparse durante futuros cambios de código.

  • Navegar por tu código es más fácil cuando los métodos se definen pronto en una sola clase. No necesitas rastrear toda la jerarquía para encontrar un método concreto.

##Cómo refactorizar

  1. Selecciona qué clase es más fácil de eliminar: la superclase o su subclase.

  2. Usa Subir campo y Subir método si decides deshacerte de la subclase. Si optas por eliminar la superclase, recurre a Bajar campo y Bajar método.

  3. Sustituye todos los usos de la clase que vas a eliminar por la clase a la que se van a migrar los campos y métodos. A menudo se tratará de código para crear clases, tipado de variables y parámetros, y documentación en los comentarios del código.

  4. Elimina la clase vacía.