ConstructiCat Logo
CodeBust.
Browse section ▾

Reemplazar Variable Temporal por Consulta.

Problem

Colocas el resultado de una expresión en una variable local para su uso posterior en el código.

Solution

Mueve toda la expresión a un método independiente y devuelve el resultado desde él. Consulta el método en lugar de usar una variable. Incorpora el nuevo método en otros métodos, si es necesario.

##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 refactorización puede sentar las bases para aplicar Extraer Método a una parte de un método muy largo.

La misma expresión a veces puede encontrarse también en otros métodos, lo que es una razón para considerar la creación de un método común.

##Benefits

  • Legibilidad del código. Es mucho más fácil entender el propósito del método getTax() que la línea orderPrice() * 0.2.

  • Código más esbelto mediante la eliminación de duplicación, si la línea reemplazada se utiliza en varios métodos.

##How to Refactor

  1. Asegúrate de que se asigne un valor a la variable una sola vez dentro del método. Si no es así, usa Dividir Variable Temporal para garantizar que la variable se use únicamente para almacenar el resultado de tu expresión.

  2. Usa Extraer Método para colocar la expresión de interés en un nuevo método. Asegúrate de que este método solo devuelva un valor y no cambie el estado del objeto. Si el método afecta al estado visible del objeto, usa Separar Consulta de Modificador.

  3. Reemplaza la variable con una consulta a tu nuevo método.