domingo, 6 de abril de 2014

Como optimizar código de WindowBuilder en Eclipse

En la entrada anterior vimos como instalar el plugin WindowBuilder para generar interfaces gráficas en Eclipse (además de otras cosas que alargaron el Post :P) , en esta ocasión vamos a limpiar el “código basura” autogenerado por la herramienta y reemplazarlo con nuestra propia lógica de programación…

Una de las tantas cosas que mencioné en la entrada sobre Eclipse Vs Netbeans fue la cantidad de “código basura” que Netbeans nos genera cuando usamos la paleta de componentes, sin embargo gracias a la entrada anterior pudimos ver que no es solo Netbeans sino que el plugin instalado también lo hace…..

Que es el “Código Basura”?

Lo que yo llamo “código basura” básicamente es código y lógica de programación autogenerada que si bien funciona sin problemas, nos trae código fuente extenso y en ocasiones difícil de entender, lo que a futuro podría traer problemas de mantenimiento o tamaño (dependiendo de la complejidad)….

Adicional a esto, también se le llama así ya que es código que puede ser reemplazado por lógica más corta, como lo decía en otros ejemplos, un proceso autogenerado puede tener 10 líneas de código, que fácilmente podría reemplazarse por 3…. Lo que hace más simple nuestro programa y fácil de entender…

Entendiendo nuestro Código!!!

En el post anterior creamos una ventana por medio del editor, lo que nos generó la siguiente clase.



Antes de querer optimizarla primero debemos entenderla…

Si analizamos el código podemos darnos cuenta que no tenemos ningún componente, tan solo tenemos un JFrame con un tamaño por defecto, y aun así tenemos 25 líneas de código fuente (sin contar saltos de línea ni comentarios).

Vemos también que el método main tiene unas líneas que pueden ser extrañas para algunos… pero los que lo identifican pueden ver que se está utilizando un hilo (o su nombre técnico un thread) y dentro del método run (que ejecuta el hilo) se instancia la clase VentanaPrincipal de la forma window= new VentanaPrincipal() y por último la muestra…

Al instanciarla lo que se hace es ingresar al constructor de la clase y llamar al método initialize() que a su vez instancia el Jframe y define las propiedades necesarias para su visualización……….. Simple Verdad????

Tal vez para muchos esto es normal y no hay porque alarmarse, sin embargo una persona que apenas comienza puede que o no lo entienda y no le presta mayor importancia…….. o simplemente se pierde en este código y ahí es donde empiezan los problemas….

Limpiando nuestro Código!!!

Ya habiendo entendido la lógica generada podemos hacer varios cambios…

Cuando usamos patrones como el Modelo Vista Controlador (MVC) es necesario separar las vistas de la lógica y el modelo… por tal razón una buena práctica es que el método main debe ir en una clase aparte para independizar el llamado y  la creación de la ventana… por ese motivo lo primero que haremos será crear una clase Principal que tenga el método Main y lo eliminaremos de la ventana principal…


Ahora si vemos la ventana principal, también se generó un objeto JFrame, esto lo podemos optimizar heredando de JFrame para evitar la instancia del componente…



Luego de esto podemos eliminar el objeto Frame que se creó y redefinir el uso de los componentes JFrame, ya que no se necesitará el objeto gracias a la herencia…

Dejaremos el constructor y el método initialize()…… eliminamos los import sobrantes y tendremos algo como esto 


Para finalizar hacemos el llamado a la ventanaPrincipal desde el método main en la clase Principal…. Instanciando la ventana y mostrándola…



Y Listo!!!

De esa manera podemos ver como con pocos cambios limpiamos nuestro código fuente haciéndolo más simple, estructurado y fácil de entender…… reduciendo de 25 a 16 líneas entre las dos clases……

Tal vez para algunos no sea un cambio significativo pero se debe tener en cuenta la simplicidad de la aplicación…. en aplicaciones más grandes podría ahorrarnos mucho trabajo de mantenimiento y entendimiento…..

Espero que esta entrada les pueda servir….. y tu? Que tienes para Decir????


También te podría Interesar. 


¿Hay algo que quieras anexar o comentar sobre esta entrada?  no dudes en hacerlo.....y si te gustó...... te invito a compartir y Suscribirte ingresando al botón "Participar en este sitio" para darte cuenta de mas entradas como esta ;)

18 comentarios:

  1. Gracias por tus aportes yo que apenas estoy empezando me sirve de mucho, explicas muy bien

    ResponderEliminar
    Respuestas
    1. Ey muchas gracias, me alegra saber que te pude colaborar!!!!

      Eliminar
  2. Gracias , excelente aporte aunque lo instale con help-new software pero me sirvió mucho :D

    ResponderEliminar
  3. Cristian: creeme que eres un sol en este nuevo camino de Java que empiezo a recorrer y justo esta explicacion de como utilizar una ventana de windows builder de una clase era lo que necesitaba conocer pero sobre todo entender paso a paso como tu lo hiciste. Tengo que crear una clase como la Aplicacion y utilizar dos aplicacion windows y entre ellas pasar datos, es decir una es el menu principal (Class Aplicacion en este caso), desde donde se llama a la ventana 1 que recibirá los datos y los envia a otra ventana 2 que hará calculos con los datos pasados de la ventana 1. La pregunta es ¿como hacer ese pase de datos por medio de la Clase Aplicación(Ventana Principal del programa)?

    ResponderEliminar
  4. Muy buen aporte en lo que a mi respecta encuentro mejor implementar mediantecodigo nuestras interfaces obvio requiere más código pero siempre prefiero saber como se crean

    ResponderEliminar
  5. Hola, solo queria dejar como comentario que no es una buena práctica forzar la herencia innecesariamente cuando una composición lo resuelve. Y se prefiere esto en la mayoria de los casos; En aplicaciones grandes puede traer problemas el tema de la herencia, además si vos creas tu objeto que contiene un JFrame le quitas toda la visibilidad a los métodos de JFrame, dejando solo la interfaz que refleje el comportamiento de TU objeto, si vas por la herencia con la herencia están visibles ya que tu objeto SERIA UN JFrame.
    Sólo eso como comentario, en aplicaciones chicas y simples, y para recién arrancar no hay problema.
    Saludos!

    ResponderEliminar
    Respuestas
    1. Ups quedó mal redactado, disculpen, sean libre de editarlo. Linea 5 : *,si vas por la herencia todos esos métodos quedarán visibles ya que tu objeto SERIA UN JFrame*

      Eliminar
  6. Hola Cristian:
    Estoy empezando con Java y tus entradas las encuentro muy educativas. Esta me vino muy bien para entender algunas cosas que hacias en, por ejemplo, la del componente JFileChooser.
    Lo que quisiera saber es si existe alguna forma de poder disponer de la pestaña de diseño. Me explico, al realizar una aplicación con WindowBuilder, aparecen la pestaña de código y la de diseño. Esta nos viene muy bien a los que empezamos a la hora de diseñar una pantalla, me imagino que a los expertos os sobrara. El caso es que en el ejemplo del JFileChooser, solo aparece la del código.
    ¿Habria alguna manera de hacer que aparezca dicha pestaña y asi poder comprobar la parte grafica sin tener que ejecutar el programa?
    Gracias
    Francisco Orozco

    ResponderEliminar
  7. BUENAS NOTICIAS;
    ¿Está buscando apoyo financiero? Necesita un préstamo urgente para pagar
    ¿Sus cuentas o deudas? Esta es la oportunidad que usted está buscando. Ofrecemos todo
    Tipos de préstamos, tales como préstamos de empresa, préstamos para automóviles,
    Capital, préstamos para vivienda, préstamos estudiantiles o un préstamo de su elección al 2%
    Tasa de interés. Las personas interesadas deben contactarnos con este e-mail
    Dirección: pedroazevedo532@gmail.com

    ResponderEliminar
  8. Good Day Dear Loan Seeker,

    Do you need an urgent financial credit *? * Very fast and direct transfer to your bank account * Repayment starts eight months after you get the money bank account * Low interest rate of 1% * Long-term repayment (1-30 years) Height * Flexible **then monthly payment *. How long will it be financed? After submitting the application ** You can expect a preliminary answer less than 24 hours funding in 72-96 hours after receiving the information they need yours.

    Contact Email : bdsfn.com@gmail.com
    Contact Email : anatiliatextileltd@gmail.com
    Mrs. Pranchment Dura

    If you are interested contact us via: bdsfn.com@gmail.com and fill out the below loan application form.

    Loan application form:
    Full Name:....................
    Country:.....................
    State:..............
    City:..............
    Sex:.........................
    Phone Number:...........
    Loan Amount :...........
    Monthly income:..........
    Occupation:................... ....
    Loan Period:....................... ................
    Purpose of Loan:......................... ...........
    E-mail address:...................... ................
    Have You Applied Before?....................

    We awaits your urgent application form to be filled ok. Email Us: (bdsfn.com@gmail.com)

    Contact Email : bdsfn.com@gmail.com
    Contact Email : anatiliatextileltd@gmail.com
    Mrs. Pranchment Dura

    ResponderEliminar
  9. Good Day Dear Loan Seeker,

    Do you need an urgent financial credit *? * Very fast and direct transfer to your bank account * Repayment starts eight months after you get the money bank account * Low interest rate of 1% * Long-term repayment (1-30 years) Height * Flexible **then monthly payment *. How long will it be financed? After submitting the application ** You can expect a preliminary answer less than 24 hours funding in 72-96 hours after receiving the information they need yours.

    Contact Email : bdsfn.com@gmail.com
    Contact Email : anatiliatextileltd@gmail.com
    Mrs. Pranchment Dura

    If you are interested contact us via: bdsfn.com@gmail.com and fill out the below loan application form.

    Loan application form:
    Full Name:....................
    Country:.....................
    State:..............
    City:..............
    Sex:.........................
    Phone Number:...........
    Loan Amount :...........
    Monthly income:..........
    Occupation:................... ....
    Loan Period:....................... ................
    Purpose of Loan:......................... ...........
    E-mail address:...................... ................
    Have You Applied Before?....................

    We awaits your urgent application form to be filled ok. Email Us: (bdsfn.com@gmail.com)

    Contact Email : bdsfn.com@gmail.com
    Contact Email : anatiliatextileltd@gmail.com
    Mrs. Pranchment Dura

    ResponderEliminar
  10. Hola señora / señor,
    Sois personas especiales y felices. haber
    ¿Estás ejecutando un proyecto y te falta dinero? Tu quieres
    ¿Hacer un proyecto y quedarse sin dinero?
    Soy una persona financiera que te acompaña en tu proyecto de marketing.
    A su disposición un préstamo de $ 5,000 a $ 2,500,000 para
    Condiciones muy simples. Ofrezco préstamos a corto, mediano y largo plazo.
    y condiciones de pago asequibles. El uso del crédito es específico para
    Sus necesidades y transferencias son proporcionadas por un
    transacción bancaria segura.
    Para realizar su solicitud, responda directamente a este correo electrónico,
    un placer responderle lo antes posible para
    Su solicitud será aceptada!
    Dirección: axabanko51@gmail.com

    Mi número de WhatsApp: +33755256171

    ResponderEliminar
  11. Hola señora / señor,
    Sois personas especiales y felices. haber
    ¿Estás ejecutando un proyecto y te falta dinero? Tu quieres
    ¿Hacer un proyecto y quedarse sin dinero?
    Soy una persona financiera que te acompaña en tu proyecto de marketing.
    A su disposición un préstamo de $ 5,000 a $ 2,500,000 para
    Condiciones muy simples. Ofrezco préstamos a corto, mediano y largo plazo.
    y condiciones de pago asequibles. El uso del crédito es específico para
    Sus necesidades y transferencias son proporcionadas por un
    transacción bancaria segura.
    Para realizar su solicitud, responda directamente a este correo electrónico,
    un placer responderle lo antes posible para
    Su solicitud será aceptada!
    Dirección: axabanko51@gmail.com

    Mi número de WhatsApp: +33755256171

    ResponderEliminar
  12. Hola señora / señor,
    Sois personas especiales y felices. haber
    ¿Estás ejecutando un proyecto y te falta dinero? Tu quieres
    ¿Hacer un proyecto y quedarse sin dinero?
    Soy una persona financiera que te acompaña en tu proyecto de marketing.
    A su disposición un préstamo de $ 5,000 a $ 2,500,000 para
    Condiciones muy simples. Ofrezco préstamos a corto, mediano y largo plazo.
    y condiciones de pago asequibles. El uso del crédito es específico para
    Sus necesidades y transferencias son proporcionadas por un
    transacción bancaria segura.
    Para realizar su solicitud, responda directamente a este correo electrónico,
    un placer responderle lo antes posible para
    Su solicitud será aceptada!
    Dirección: axabanko51@gmail.com

    Mi número de WhatsApp: +33755256171

    ResponderEliminar
  13. Hola señora / señor,
    Sois personas especiales y felices. haber
    ¿Estás ejecutando un proyecto y te falta dinero? Tu quieres
    ¿Hacer un proyecto y quedarse sin dinero?
    Soy una persona financiera que te acompaña en tu proyecto de marketing.
    A su disposición un préstamo de $ 5,000 a $ 2,500,000 para
    Condiciones muy simples. Ofrezco préstamos a corto, mediano y largo plazo.
    y condiciones de pago asequibles. El uso del crédito es específico para
    Sus necesidades y transferencias son proporcionadas por un
    transacción bancaria segura.
    Para realizar su solicitud, responda directamente a este correo electrónico,
    un placer responderle lo antes posible para
    Su solicitud será aceptada!
    Dirección: axabanko51@gmail.com

    Mi número de WhatsApp: +33755256171

    ResponderEliminar
  14. OFERTA DE PRÉSTAMO EN 48 HORAS.
    Holà
    Haga su solicitud de dinero rápido en 48 horas.
    Ponte en contacto conmigo por whatsapp. Por último para una mayor comprensión por favor, póngase en contacto conmigo:
    Mail: vousfinancer@pm.me
    Numero WhatsApp: +33756914624
    Gracias.

    ResponderEliminar
  15. Préstamo para particulares y profesionales

    Proclamamos una buena noticia!
    GREEN Company Energía, en colaboración con una agencia francesa VOUSFINANCER, otorga préstamos a individuos dinero aquí en los Estados Unidos con una tasa de interés del 2 al 5% por año durante un período de 1 a 15 años de 5.000 a 20.000.000 amortización efectiva comienza tres meses, la transferencia se lleva a cabo y cuotas mensuales.
    No dude en ponerse en contacto conmigo en cualquier lugar para más información si usted necesita un préstamo de un plazo de 5 días.

    Para los que hablaba español, francés e Inglés departamento email: vousfinancer@pm.me

    Teléfono(whatsapp): +33756914624

    Gracias usted

    ResponderEliminar

Eres libre de realizar cualquier comentario, desde que pueda ayudar con gusto lo atenderé, y si es un critica, bienvenida sea!!!