Logotipo do ConstructiCat
CodeBust.
Explorar a seção ▾

Preservar o Objeto Inteiro.

Problema

Você obtém vários valores de um objeto e depois os passa como parâmetros para um método.

Solução

Em vez disso, tente passar o objeto inteiro.

##Exemplo

Antes
int low = daysTempRange.getLow();
int high = daysTempRange.getHigh();
boolean withinPlan = plan.withinRange(low, high);
Depois
boolean withinPlan = plan.withinRange(daysTempRange);

##Por que refatorar

O problema é que, toda vez antes de o seu método ser chamado, os métodos do futuro objeto de parâmetro precisam ser chamados. Se esses métodos ou a quantidade de dados obtidos para o método forem alterados, você terá que encontrar cuidadosamente uma dúzia desses lugares no programa e implementar essas alterações em cada um deles.

Depois de aplicar essa técnica de refatoração, o código para obter todos os dados necessários ficará armazenado em um único lugar—o próprio método.

##Benefícios

  • Em vez de uma mistura confusa de parâmetros, você vê um único objeto com um nome compreensível.

  • Se o método precisar de mais dados de um objeto, você não precisará reescrever todos os lugares onde o método é usado—apenas dentro do próprio método.

##Como refatorar

  1. Crie no método um parâmetro para o objeto do qual você pode obter os valores necessários.

  2. Agora comece a remover os antigos parâmetros do método um a um, substituindo-os por chamadas aos métodos correspondentes do objeto de parâmetro. Teste o programa após cada substituição de um parâmetro.

  3. Exclua o código do getter do objeto de parâmetro que precedia a chamada do método.