ConstructiCat Logo
CodeBust.
Browse section ▾

Mover campo.

Problem

Un campo se utiliza más en otra clase que en la suya propia.

Solution

Crea un campo en una nueva clase y redirige hacia él a todos los usuarios del campo antiguo.

##Example

Before
Class1 aField Class2
After
Class1 Class2 aField

##Why Refactor

A menudo los campos se mueven como parte de la técnica Extraer clase. Decidir en qué clase dejar el campo puede ser complicado. Esta es nuestra regla general: coloca un campo en el mismo lugar que los métodos que lo usan (o bien allí donde se encuentre la mayoría de esos métodos).

Esta regla ayudará en otros casos en los que un campo simplemente esté ubicado en el lugar equivocado.

##How to Refactor

  1. Si el campo es público, la refactorización será mucho más fácil si haces el campo privado y proporcionas métodos de acceso públicos (para ello, puedes usar Encapsular campo).

  2. Crea el mismo campo con métodos de acceso en la clase receptora.

  3. Decide cómo vas a referirte a la clase receptora. Puede que ya tengas un campo o un método que devuelva el objeto adecuado; si no, tendrás que escribir un nuevo método o campo para almacenar el objeto de la clase receptora.

  4. Sustituye todas las referencias al campo antiguo por las llamadas apropiadas a los métodos de la clase receptora. Si el campo no es privado, ocúpate de esto en la superclase y las subclases.

  5. Elimina el campo en la clase original.