Mover Método.
Um método é usado mais em outra classe do que na sua própria classe.
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
##Why Refactor
-
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.
-
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
-
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.
-
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.
-
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.
-
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.