ConstructiCat Logo
CodeBust.
Browse section ▾

Substituir Variável Temporária por Consulta.

Problem

Você coloca o resultado de uma expressão em uma variável local para uso posterior no seu código.

Solution

Mova a expressão inteira para um método separado e retorne o resultado dele. Consulte o método em vez de usar uma variável. Incorpore o novo método em outros métodos, se necessário.

##Example

Before
double calculateTotal() {
  double basePrice = quantity * itemPrice;
  if (basePrice > 1000) {
    return basePrice * 0.95;
  }
  else {
    return basePrice * 0.98;
  }
}
After
double calculateTotal() {
  if (basePrice() > 1000) {
    return basePrice() * 0.95;
  }
  else {
    return basePrice() * 0.98;
  }
}
double basePrice() {
  return quantity * itemPrice;
}

##Why Refactor

Esta refatoração pode preparar o terreno para aplicar Extrair Método em uma parte de um método muito longo.

A mesma expressão às vezes também pode ser encontrada em outros métodos, o que é uma razão para considerar a criação de um método comum.

##Benefits

  • Legibilidade do código. É muito mais fácil entender o propósito do método getTax() do que a linha orderPrice() * 0.2.

  • Código mais enxuto via deduplicação, se a linha que está sendo substituída for usada em vários métodos.

##How to Refactor

  1. Certifique-se de que um valor é atribuído à variável uma única vez dentro do método. Caso contrário, use Dividir Variável Temporária para garantir que a variável seja usada apenas para armazenar o resultado da sua expressão.

  2. Use Extrair Método para colocar a expressão de interesse em um novo método. Certifique-se de que esse método apenas retorne um valor e não altere o estado do objeto. Se o método afetar o estado visível do objeto, use Separar Consulta de Modificador.

  3. Substitua a variável por uma consulta ao seu novo método.