ConstructiCat Logo
CodeBust.
Browse section ▾

Introduzir Objeto de Parâmetro.

Problem

Seus métodos contêm um grupo de parâmetros que se repete.

Solution

Substitua esses parâmetros por um objeto.

##Example

Antes
Customer amountInvoicedIn(start: Date, end: Date)amountReceivedIn(start: Date, end: Date)amountOverdueIn(start: Date, end: Date)
Depois
Customer amountInvoicedIn(date: DateRange)amountReceivedIn(date: DateRange)amountOverdueIn(date: DateRange)

##Why Refactor

Grupos idênticos de parâmetros são frequentemente encontrados em vários métodos. Isso causa duplicação de código tanto dos próprios parâmetros quanto das operações relacionadas. Ao consolidar os parâmetros em uma única classe, você também pode mover para lá os métodos que tratam esses dados, liberando os outros métodos desse código.

##Benefits

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

  • Grupos idênticos de parâmetros espalhados por toda parte criam seu próprio tipo de duplicação de código: embora não haja código idêntico sendo chamado, grupos idênticos de parâmetros e argumentos são constantemente encontrados.

##How to Refactor

  1. Crie uma nova classe que representará seu grupo de parâmetros. Torne a classe imutável.

  2. No método que você deseja refatorar, use Adicionar Parâmetro, que é onde seu objeto de parâmetro será passado. Em todas as chamadas do método, passe a esse parâmetro o objeto criado a partir dos antigos parâmetros do método.

  3. Agora comece a excluir os antigos parâmetros do método um a um, substituindo-os no código pelos campos do objeto de parâmetro. Teste o programa após cada substituição de parâmetro.

  4. Ao terminar, verifique se faz sentido mover parte do método (ou, às vezes, até o método inteiro) para a classe do objeto de parâmetro. Se for o caso, use Mover Método ou Extrair Método.