ConstructiCat Logo
CodeBust.
Browse section ▾

Mover Campo.

Problem

Um campo é usado mais em outra classe do que na sua própria classe.

Solution

Crie um campo em uma nova classe e redirecione todos os usuários do campo antigo para ele.

##Example

Antes
Class1 aField Class2
Depois
Class1 Class2 aField

##Why Refactor

Muitas vezes os campos são movidos como parte da técnica Extrair Classe. Decidir em qual classe deixar o campo pode ser difícil. Aqui vai a nossa regra prática: coloque um campo no mesmo lugar que os métodos que o usam (ou então onde está a maioria desses métodos).

Essa regra ajudará em outros casos em que um campo simplesmente está no lugar errado.

##How to Refactor

  1. Se o campo for público, a refatoração será muito mais fácil se você tornar o campo privado e fornecer métodos de acesso públicos (para isso, você pode usar Encapsular Campo).

  2. Crie o mesmo campo, com métodos de acesso, na classe destinatária.

  3. Decida como você vai se referir à classe destinatária. Talvez você já tenha um campo ou método que retorne o objeto apropriado; se não, será preciso escrever um novo método ou campo para armazenar o objeto da classe destinatária.

  4. Substitua todas as referências ao campo antigo por chamadas apropriadas aos métodos da classe destinatária. Se o campo não for privado, cuide disso na superclasse e nas subclasses.

  5. Exclua o campo na classe original.