Logotipo de ConstructiCat
CodeBust.
Explorar la sección ▾

Reemplazar Variable Temporal por Consulta.

Problema

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

Solución

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.

##Ejemplo

Antes
double calculateTotal() {
  double basePrice = quantity * itemPrice;
  if (basePrice > 1000) {
    return basePrice * 0.95;
  }
  else {
    return basePrice * 0.98;
  }
}
Después
double calculateTotal() {
  if (basePrice() > 1000) {
    return basePrice() * 0.95;
  }
  else {
    return basePrice() * 0.98;
  }
}
double basePrice() {
  return quantity * itemPrice;
}

##Por qué refactorizar

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.

##Ventajas

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

##Cómo refactorizar

  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.