ConstructiCat Logo
CodeBust.
Browse section ▾

Mover Método.

Problem

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

Solution

Crie um novo método na classe que mais usa o método e, em seguida, mova o código do método antigo para lá. Transforme o código do método original em uma referência ao novo método na outra classe ou então remova-o por completo.

##Example

Antes
Class1 aMethod() Class2
Depois
Class1 Class2 aMethod()

##Why Refactor

  1. Você quer mover um método para uma classe que contém a maior parte dos dados usados pelo método. Isso torna as classes mais coerentes internamente.

  2. Você quer mover um método para reduzir ou eliminar a dependência da classe que chama o método em relação à classe onde ele está localizado. Isso pode ser útil se a classe chamadora já depende da classe para a qual você planeja mover o método. Isso reduz a dependência entre as classes.

##How to Refactor

  1. Verifique todas as funcionalidades usadas pelo método antigo em sua classe. Pode ser uma boa ideia movê-las também. Como regra, se uma funcionalidade é usada apenas pelo método em questão, você certamente deve mover a funcionalidade junto com ele. Se a funcionalidade também for usada por outros métodos, você deve mover esses métodos também. Às vezes é muito mais fácil mover um grande número de métodos do que estabelecer relações entre eles em classes diferentes.

    Certifique-se de que o método não esteja declarado em superclasses e subclasses. Se for o caso, você terá que se abster de movê-lo ou então implementar uma espécie de polimorfismo na classe destinatária para garantir a funcionalidade variável de um método dividido entre as classes doadoras.

  2. Declare o novo método na classe destinatária. Talvez você queira dar ao método um novo nome que seja mais apropriado para ele na nova classe.

  3. Decida como você vai referenciar a classe destinatária. Você pode já ter um campo ou método que retorne um objeto apropriado, mas, se não, será preciso escrever um novo método ou campo para armazenar o objeto da classe destinatária.

    Agora você tem uma forma de referenciar o objeto destinatário e um novo método em sua classe. Com tudo isso em mãos, você pode transformar o método antigo em uma referência ao novo método.

  4. Observe: você consegue excluir o método antigo por completo? Se sim, coloque uma referência ao novo método em todos os lugares que usam o antigo.