Logotipo de ConstructiCat
CodeBust.
Explorar la sección ▾

Subir campo.

Problema

Dos clases tienen el mismo campo.

Solución

Elimina el campo de las subclases y muévelo a la superclase.

##Ejemplo

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

##Por qué refactorizar

Las subclases crecieron y evolucionaron por separado, lo que provocó la aparición de campos y métodos idénticos (o casi idénticos).

##Ventajas

  • Elimina la duplicación de campos en las subclases.

  • Facilita la posterior reubicación de métodos duplicados, si existen, desde las subclases hacia una superclase.

##Cómo refactorizar

  1. Asegúrate de que los campos se usan para las mismas necesidades en las subclases.

  2. Si los campos tienen nombres diferentes, dales el mismo nombre y reemplaza todas las referencias a los campos en el código existente.

  3. Crea un campo con el mismo nombre en la superclase. Ten en cuenta que si los campos eran privados, el campo de la superclase debería ser protegido.

  4. Elimina los campos de las subclases.

  5. Quizá quieras considerar el uso de Autoencapsular campo para el nuevo campo, con el fin de ocultarlo tras métodos de acceso.