La técnica de refactorización extract variable o extracción de variables sirve para simplificar o hacer manejables y comprensibles algunas expresiones que tiene el código del proyecto que estamos desarrollando.
El propósito de cualquier técnica de refactorización es lograr un código que sea entendible, que esté organizado y que sea fácil de mantener y modificar.
Por esta razón, hay técnicas como la extract variable que nos permiten atender hasta la expresión mínima de un programa y optimizarla para conseguir el mejor resultado en cada uno de los proyectos que desarrollamos.
Si el código que estamos escribiendo tiene expresiones extensas que abarcan mucho espacio, que involucran varias operaciones o que tienen varios componentes que tienden a confundir, es necesario aplicar la técnica extract variable.
También podemos combinar esta técnica cuando extraemos nuevos métodos, así podremos darles variables locales con un nombre que muestre claramente lo que contienen y la función que están aportando al código.
A continuación veremos un ejemplo de código antes y después de hacer uso de la técnica extract variable, para comprender mejor cómo puede ser usada.
package extractVariable;
public class Precio {
double precio = 0;
double descuento = 0;
int cantidad = 0;
double impt = 0;
public Precio(double precio, double descuento, int cantidad, double impt) {
this.precio = precio;
this.descuento = descuento;
this.cantidad = cantidad;
this.impt = impt;
}
double calcularPrecio() {
double precioFinal = 0;
/*Haremos el cálculo del pago que debe realizar
un cliente que compra productos con un 25% de descuento
sobre el total. El procedimiento es largo,
confuso y comentarlo detalladamente sería engorroso
*/
precioFinal = (precio * cantidad + (precio * cantidad * impt / 100))
- (descuento / 100 * (precio * cantidad +
(precio * cantidad * impt / 100)));
return (precioFinal);
}
public static void main(String[] args) {
Precio obj1 = new Precio(500, 25, 2, 12);
System.out.println("MONTO A PAGAR: " + obj1.calcularPrecio());
}
}
Ahora, aplicaremos la técnica de extraer variables o extract variable, tantas veces como sea necesario para que la expresión que era compleja, sea comprensible para cualquiera que vea el código.
package extractVariable;
public class Precio {
double precio = 0;
double descuento = 0;
int cantidad = 0;
double impt = 0;
public Precio(double precio, double descuento, int cantidad, double impt) {
this.precio = precio;
this.descuento = descuento;
this.cantidad = cantidad;
this.impt = impt;
}
double calcularPrecio() {
double precioFinal = 0;
//determinamos la base
double base = (precio * cantidad);
//determinamos el impuesto a pagar
double impuesto = base * impt / 100;
//obtenemos el total sin descuento
double total = base + impuesto;
//calculamos el descuento
double d = total * descuento / 100;
//calculamos el total que tiene que pagar el cliente
precioFinal = total - d;
return (precioFinal);
}
public static void main(String[] args) {
Precio obj1 = new Precio(500, 25, 2, 12);
System.out.println("MONTO A PAGAR: " + obj1.calcularPrecio());
}
}