ConstructiCat Logo
CodeBust.
Browse section ▾

Preservar o Objeto Inteiro.

Problem

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

Solution

Em vez disso, tente passar o objeto inteiro.

##Example

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

##Why Refactor

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.

##Benefits

  • 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.

##How to Refactor

  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.