ConstructiCat Logo
CodeBust.
Browse section ▾

Substituir Parâmetro por Chamada de Método.

Problem

Chamar um método de consulta e passar seus resultados como parâmetros de outro método, quando esse método poderia chamar a consulta diretamente.

Solution

Em vez de passar o valor por meio de um parâmetro, tente colocar a chamada de consulta dentro do corpo do método.

##Example

Before
int basePrice = quantity * itemPrice;
double seasonDiscount = this.getSeasonalDiscount();
double fees = this.getFees();
double finalPrice = discountedPrice(basePrice, seasonDiscount, fees);
After
int basePrice = quantity * itemPrice;
double finalPrice = discountedPrice(basePrice);

##Why Refactor

Uma longa lista de parâmetros é difícil de entender. Além disso, chamadas a esses métodos muitas vezes lembram uma série de cascatas, com cálculos de valores sinuosos e vertiginosos que são difíceis de acompanhar, mas que precisam ser passados ao método. Portanto, se o valor de um parâmetro pode ser calculado com a ajuda de um método, faça isso dentro do próprio método e livre-se do parâmetro.

##Benefits

  • Eliminamos parâmetros desnecessários e simplificamos as chamadas de método. Esses parâmetros muitas vezes são criados não para o projeto como ele é agora, mas pensando em necessidades futuras que talvez nunca cheguem.

##How to Refactor

  1. Certifique-se de que o código que obtém o valor não usa parâmetros do método atual, pois eles ficarão indisponíveis de dentro de outro método. Se usar, mover o código não é possível.

  2. Se o código relevante for mais complicado do que uma única chamada de método ou função, use Extrair Método para isolar esse código em um novo método e tornar a chamada simples.

  3. No código do método principal, substitua todas as referências ao parâmetro que está sendo substituído por chamadas ao método que obtém o valor.

  4. Use Remover Parâmetro para eliminar o parâmetro agora sem uso.