El refactoring de Eclipse Parameter Object puede ser uno de los refactorings más prácticos que tenemos a mano en el entorno de desarrollo . Aún así es poco conocido por parte de los programadores. vamos a ver un ejemplo sencillo de como usarlo . Supongamos que tenemos una clase Main que dispone de una Compra y esa compra hay que entregarla en alguna Coordenada especifica . Lo más sencillo es construir una clase Compra y definir las Coordenadas X, Y que son direcciones de entrega. Veámoslo en código en una primera aproximación.,
package com.arquitecturajava; public class Compra { private String concepto; private double importe; public String getConcepto() { return concepto; } public void setConcepto(String concepto) { this.concepto = concepto; } public double getImporte() { return importe; } public void setImporte(double importe) { this.importe = importe; } public Compra(String concepto, double importe) { super(); this.concepto = concepto; this.importe = importe; } public Compra() { super(); } }
Tenemos la clase Compra con sus campos
Nos falta la clase principal que es la encargada de entregar la Compra geolocalizada
package com.arquitecturajava; public class Principal { public static void main(String[] args) { Compra c= new Compra("ordenador",200); entregarCompra(c, 1.8999,2.3454); } public static void entregarCompra(Compra c , double x , double y) { System.out.println("la compra " + c.getConcepto() +"se ha entregado"); System.out.println("el importe es :" + c.getImporte()); System.out.println("la coordenada x es " + x ); System.out.println("la coordenada y es " + y ); } }
El resultado lo podemos ver por la consola:
la compra ordenador se ha entregado el importe es :200.0 la coordenada x es 1.8999 la coordenada y es 2.3454
Si revisamos el código nos daremos cuenta que probablemente no hemos definido el concepto de Coordenada y tenemos dos variables doubles x, y .
Eclipse Parameter Object
Eclipse Parameter Object es el refactoring que se encarga de solventar este problema y generar una nueva clase a partir de la selección de parámetros que tengamos.
Una vez seleccionado el refactoring el siguiente paso es definir el nombre de la clase y solicitar que añada los métodos set/get con estas dos cosas pulsamos ok y nos generará el nuevo código
Eclipse Parameter Object y Clase Coordenada
Hemos generado una clase adicional que se denomina Coordenada y el método main ha sido refactorizado completamente para usarla de forma natural con sus métodos get/set y constructor
package com.arquitecturajava; public class Coordenada { private double x; private double y; public Coordenada(double x, double y) { this.x = x; this.y = y; } public double getX() { return x; } public double getY() { return y; } }
El programa main queda de la siguiente forma:
package com.arquitecturajava; public class Principal { public static void main(String[] args) { Compra c= new Compra("ordenador",200); entregarCompra(c, new Coordenada(1.8999, 2.3454)); } public static void entregarCompra(Compra c , Coordenada parameterObject) { System.out.println("la compra " + c.getConcepto() +"se ha entregado"); System.out.println("el importe es :" + c.getImporte()); System.out.println("la coordenada x es " + parameterObject.getX() ); System.out.println("la coordenada y es " + parameterObject.getY() ); } }
Conclusiones
Hemos usado Eclipse Parameter Object y convertido dos variables sencillas x,y en una nueva clase que encaja en el modeloy contiene los métodos set/get y el constructor.
En IntelliJ esta en:
Ctrl+Alt+May-^P
gracias 🙂