ConstructiCat Logo
CodeBust.
Browse section ▾

Mover método.

Problem

Un método se usa más en otra clase que en la suya propia.

Solution

Crea un método nuevo en la clase que más lo usa y traslada allí el código del método antiguo. Convierte el código del método original en una referencia al nuevo método de la otra clase, o bien elimínalo por completo.

##Example

Antes
Class1 aMethod() Class2
Después
Class1 Class2 aMethod()

##Why Refactor

  1. Quieres trasladar un método a una clase que contiene la mayor parte de los datos que usa el método. Esto hace que las clases sean más coherentes internamente.

  2. Quieres trasladar un método para reducir o eliminar la dependencia de la clase que llama al método respecto de la clase en la que se encuentra. Esto puede ser útil si la clase llamante ya depende de la clase a la que tienes pensado trasladar el método. Esto reduce la dependencia entre clases.

##How to Refactor

  1. Verifica todas las características que usa el método antiguo en su clase. Puede ser buena idea trasladarlas también. Por norma general, si una característica solo la usa el método en cuestión, deberías sin duda trasladarla junto con él. Si la característica también la usan otros métodos, deberías trasladar también esos métodos. A veces es mucho más fácil trasladar un gran número de métodos que establecer relaciones entre ellos en distintas clases.

    Asegúrate de que el método no esté declarado en superclases ni subclases. Si es así, tendrás que abstenerte de moverlo o bien implementar algún tipo de polimorfismo en la clase receptora para garantizar la funcionalidad variable de un método repartido entre las clases donantes.

  2. Declara el método nuevo en la clase receptora. Quizá quieras darle al método un nombre nuevo que resulte más apropiado en la nueva clase.

  3. Decide cómo te referirás a la clase receptora. Puede que ya tengas un campo o método que devuelva un objeto apropiado, pero si no es así, tendrás que escribir un método o campo nuevo para almacenar el objeto de la clase receptora.

    Ahora ya tienes una forma de referirte al objeto receptor y un método nuevo en su clase. Con todo esto a tu disposición, puedes convertir el método antiguo en una referencia al nuevo método.

  4. Echa un vistazo: ¿puedes eliminar por completo el método antiguo? Si es así, coloca una referencia al nuevo método en todos los lugares que usan el antiguo.