PDF de programación - Refactoring con NetBeans

Imágen de pdf Refactoring con NetBeans

Refactoring con NetBeansgráfica de visualizaciones

Publicado el 12 de Abril del 2018
560 visualizaciones desde el 12 de Abril del 2018
300,5 KB
12 paginas
Creado hace 9a (16/06/2014)
OpenStax-CNX module: m17586

1


Refactoring con Netbeans

Miguel-Angel Sicilia

This work is produced by OpenStax-CNX and licensed under the

Creative Commons Attribution License 2.0



Aplicación de Refactoring a Netbeans. Breve descripción y caso práctico.

Abstract

Refactoring es el proceso de llevar a cabo cambios en su código sin afectar el comportamiento de la

aplicación.

1 Caso práctico de Refactoring

Tengo una aplicación bancaria que ya fue correctamente implementada, esta aplicación usa extensivamente
una clase llamada Transacción, la cual posee una operación cuya rma es:

public void asignarCtaCorriente(CuentaCorriente cc);
Esta operación es invocada una gran cantidad de veces por distintas operaciones en nuestra aplicación.
El programa es que se debe cambiar la rma de la operación para homogenizar el estándar de nomen-

clatura establecido por la empresa que desarrolló la aplicación. La nueva rma debería ser:

public void asignarCuentaCorriente(CuentaCorriente cc);
¾Cuál es la solución? Debemos iniciar el proceso de refactoring en nuestra aplicación para reejar este
cambio. Modicaremos la rma en la clase Transacción y luego modicar en todo el proyecto cada una de
las invocaciones.

Si la aplicación es realmente grande, implicará un gran esfuerzo llevar a cabo este cambio manualmente.

Probablemente se introduzcan errores en la aplicación.

2 Refactoring en NetBeans 5.5

A medida que se desarrolla una aplicación con NetBeans, de forma transparente para el programador se genera
un repositorio de metadata del código que el programador genera. La metadata se podría denir brevemente
como datos que describen otros datos, por lo cual NetBeans puede contar con esta información para realizar
cambios sobre los fuentes automáticamente. Gracias a este repositorio de metadata que NetBeans mantiene
es posible automatizar muchas tareas de refactoring, por ejemplo, en el caso que describimos anteriormente,
NetBeans se encarga de cambiar la rma de la operación de la clase Cuenta, buscar todas las invocaciones y
modicarlas. Adicionalmente NetBeans provee un informe del impacto que tendrá el proceso de refactoring,
para permitir al programador tomar decisiones respecto a este proceso. Luego de desplegado dicho informe
se puede iniciar el proceso de refactoring de acuerdo a las decisiones tomadas por el programador.

∗Version 1.3: Jan 14, 2009 5:19 am -0600
†http://creativecommons.org/licenses/by/2.0/

http://cnx.org/content/m17586/1.3/

OpenStax-CNX module: m17586

2

3 Menú de Refactoring en NetBeans

Teniendo las siguientes clases de Java en nuestro proyecto NetBeans (proyecto llamado PruebaCirculo):

Circulo.java

public class Circulo {

private int x;

private int y;

private double radio;

public Circulo()

{

}

// constructor

public Circulo( int valorX, int valorY, double valorRadio )

{

}

x = valorX;

y = valorY;

establecerRadio( valorRadio );

public void establecerX( int valorX )

{

}

x = valorX;

public int obtenerX()

{

return x;

http://cnx.org/content/m17586/1.3/

OpenStax-CNX module: m17586

3

}

public void establecerY( int valorY )

{

}

y = valorY;

public int obtenerY()

{

}

return y;

public void establecerRadio( double valorRadio )

{

}

radio = ( valorRadio < 0.0 ? 0.0 : valorRadio );

public double obtenerRadio()

{

}

return radio;

public double obtenerDiametro()

{

}

return 2 * radio;

public double obtenerCircunferencia()

{

http://cnx.org/content/m17586/1.3/

OpenStax-CNX module: m17586

4

return Math.PI * obtenerDiametro();

}

public double obtenerArea()

{

}

return Math.PI * radio * radio;

public String toString()

{

}

return "Centro = [" + x + ", " + y + "]; Radio = " + radio;

PruebaCirculo.java

import java.text.DecimalFormat;

import javax.swing.JOptionPane;

public class PruebaCirculo {

public static void main( String[] args )

Circulo circulo = new Circulo( 37, 43, 2.5 );

String salida = "La coordenada X es " + circulo.obtenerX() +

"\nLa coordenada Y es " + circulo.obtenerY() +

"\nEl radio es " + circulo.obtenerRadio();

circulo.establecerX( 35 );

circulo.establecerY( 20 );

circulo.establecerRadio( 4.25 );

salida += "\n\nLa nueva ubicación y el radio del círculo son\n" +

circulo.toString();

http://cnx.org/content/m17586/1.3/

OpenStax-CNX module: m17586

5

DecimalFormat dosDigitos = new DecimalFormat( "0.00" );

salida += "\nEl diámetro es " +

dosDigitos.format( circulo.obtenerDiametro() );

salida += "\nLa circunferencia es " +

dosDigitos.format( circulo.obtenerCircunferencia() );

salida += "\nEl área es " + dosDigitos.format( circulo.obtenerArea() );

JOptionPane.showMessageDialog( null, salida );

System.exit( 0 );

} // fin de main

} // fin de la clase PruebaCirculo

La estructura de nuestras carpetas en el proyecto NetBeans será la siguiente:

Figure 1

http://cnx.org/content/m17586/1.3/

OpenStax-CNX module: m17586

6

Figura 1. Visión del proyecto NetBeans con las clases java
Si nos situamos en cualquiera de nuestras clases y botón derecho, obtenemos el siguiente menú, donde

podemos observar que tenemos la opción refactorizar:

Figure 2

Figura 2. Menú de Refactorizar
A continuación, se encuentra una breve descripción de las diferentes opciones del menú:
• Renombrar → Cambia el nombre de una clase, variable o método. Adicionalmente modica todo el

código del proyecto para referenciar al nuevo nombre.

http://cnx.org/content/m17586/1.3/

OpenStax-CNX module: m17586

7

Figure 3

Figura 3. Opción renombrar

Cambiamos el nombre Circulo por Circulitos y observamos los cambios en el código que donde ponía

Circulo ahora pone Circulitos:

Figure 4

http://cnx.org/content/m17586/1.3/

OpenStax-CNX module: m17586

8

Figura 4. Cambios al aplicar Renombrar
• Cambiar parámetros de un método → Permite agregar, eliminar, modicar o cambiar el orden de los
• Encapsular campos → Es muy común tener que acceder a los campos de una clase por medio de

parámetros de un método, al igual que su modicador de acceso (private o public).

operaciones del tipo:

public set<nombre del campo>(...)

public get<nombre del campo>()
Es una tarea muy tediosa, por lo cual esta operación permite que el programador solo deba implemen-
tar los campos, delegando a NetBeans la tarea de encapsularlos. También es posible que todo código
del proyecto que accede directamente al campo, pase automáticamente a utilizar el setter o el getter
determinado.

clase que contiene al método o campo que deseamos subir.

• Ascender métodos o campos → Permite subir un método o campo a otra clase de la cual hereda la
• Descender clases anidadas, métodos o campos → Permite bajar una clase anidada, método o campo
a otra clase la cual hereda de la clase que contiene a la clase anidada, método o campo que deseamos
bajar.
• Mover una clase → Mueve una clase a otro package o dentro de otra clase. Adicionalmente modica

todo el código del proyecto para referenciar al nuevo lugar donde se movió la clase.

Figure 5

Figura 5. Opción Mover clase

• Convertir una clase anónima anidada a una clase anidada → Crea una nueva clase anidada, la cual
tendrá un nombre y un constructor. La clase anónima anidada será sustituida por esta nueva clase
anidada.

http://cnx.org/content/m17586/1.3/

OpenStax-CNX module: m17586

9

• Extraer una interfase → Permite seleccionar cuales métodos públicos no estáticos de una clase o
interfase, irán a parar a una nueva interfase. La clase de la cual fue extraída la interfase implementará
la nueva interfase creada. La interfase de la cual fue extraída la interfase extenderá la nueva interfase.

Figure 6

Figura 6. Opción Extraer interfaz

• Extraer una superclase → Despliega al programador los métodos y campos que se pueden mover a una
superclase. El programador selecciona cuales desea mover y NetBeans creará una nueva clase abstracta
que contendrá dichos campos y métodos, también hará que la clase refactorizada la extienda.

http://cnx.org/content/m17586/1.3/

OpenStax-CNX module: m17586

10

Figure 7

Figura 7. Opción Extraer superclase

• Usar supertipo cuando sea posible → Despliega al programador todas las clases que extiende la clase
actual. El programador seleccionará una, y NetBeans buscará en todo el proyecto referencias a la
clase que se quiere refactorizar, si encuentra referencias, determinará si es posible utilizar la superclase
seleccionada.

http://cnx.org/content/m17586/1.3/

OpenStax-CNX module: m17586

11

Figure 8

Figura 8. Opción Usar supertipo cuando sea posible

• Eliminación seguro → Cuando eliminamos un método o clase, debemos garantizarnos de que nadie
más lo utilice en el proyecto. Esta operación verica y notica las referencias encontradas, proveyendo
de mecanismos para que fácilmente el programador pueda eliminar una a una las referencias, para
nalmente llevar a cabo la operación de borrado de modo seguro.

http://cnx.org/content/m17586/1.3/

OpenStax-CNX module: m17586

12

Figure 9

Figura 9. Opción Eliminación segura

• Introducir constantes, variables, campos o métodos → El programador selecciona un fragmento de
código, y luego presiona las teclas <alt>+<Enter>. NetBeans desplegará varias opciones útiles, como
encapsular ese fragmento en un método y referenciar al método, anidarse en while, if, etc.

Siempre que sea posible, utilizar las herramientas de refactoring que NetBeans provee, de este modo no
solo será mucho más sencillo este tipo de procedimiento, sino que además ejecutaremos un proceso seguro
mediante el cual no introduciremos errores humanos.

http://cnx.org/content/m17586/1.3/
  • Links de descarga
http://lwp-l.com/pdf10362

Comentarios de: Refactoring con NetBeans (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad