rubensa.eu.org algo en qué pensar...

El contenido de este sitio es de libre distribución, siempre que se cite la fuente original. No está permitido su uso comercial sin previo aviso y si lo modifica o distribuye debe mantener esta licencia.

Inicio de sesión de usuario

13. Mejores Prácticas

Externaliza las Cadenas:  Externaliza siempre todas las cadenas como si estuvieses creando una aplicación localizada, incluso para aplicaciones que nunca serán localizadas.  El beneficio que obtenemos es que las cadenas se mantienen fuera del código Java.  Esta práctica permite una revisión rápida de todos los textos mostrados por una aplicación, incluyendo la posibilidad de comprobar la ortografía del texto.

Usa JavaDoc para todo:  Todas las clases y métodos de una aplicación deberían tener comentarios JavaDoc para poder ser mantenidas.  Esto es aplicable independientemente de que no vaya a trabajar en el mismo código de una aplicación más que un único desarrollador.  Cuando una clase o método se ve que es dificil de explicar en el JavaDoc, puede ser un indicador de que el código se beneficiaría de una revisión y una refactorización.

Hereda Componentes:  Los Components Echo2 han sido construidos con la intención de que sean extendidos.  Puedes encontrar beneficioso el extender los contenedores de Components como el ContentPane, Columns y Row para realizar los propósitos específicos de la aplicación.

Crea componentes dirigidos por Eventos:  Cuando derives tus propios Components, puedes desacoplarlos más de tu aplicación implementando tus propias notificaciones de eventos.  Si es necesario, incluso puedes crear tus propias implementaciones de escuchadores de eventos.  Si todas las notificaciones se realizan mediante eventos, tus Components pueden convertirse en entidades independientes, eliminando el acoplamiento con una aplicación específica.

Evita el uso de Grids:  No uses el componente Grid a menos que lo necesites realmente.  Los componentes Row y Column se pintarán más rápido y tienen sustancialmente mejores capacidades de rendimiento para realizar actualizciones cliente-servidor de grano-fino cuando se añaden o eliminan celdas.  Los Grids no tienen esta capacidad.  Del mismo modo, no uses el componente Grid para pintar datos tabulares;  el componente Table está diseñado específicamente para este propósito.

Piensa en el UpdateManager:  No realices operaciones de adición/eliminación innecesarias.  El UpdateManager de Echo2 está observando en la aplicación los cambios de propiedades y jerarquía de componentes para determinar la serie de acciones más sencillas para actualizar su estado en el navegador web cliente.  Si, por ejemplo, eliminas y vuelves a añadir un Component el UpdateManager no sabrá que en realidad no ha cambiado nada, y el Component re-añadido será re-pintado en el cliente, consumiento más ancho de banda del necesario.

Usa StyleSheets:  Usa StyleSheets siempre que puedas.  Dejan tu código más limpio y redundan en un menor uso de memoria en el servidor de aplicaciones.  Cuando usas StyleSheets, se puede compartir una sola instancia de la propiedad de estilo definida entre todas las instancias de usuario de una apliación desplegada, lo que puede conseguir una reducción sustancial de la memoria usada.  Las StyleSheets también pueden hacer que sea bastante sencillo tener múltimes temas seleccionables.  Obviamente, para poder beneficiarse del ahorro de memoria debes compartir las instancias de StyleSheet entre todos los usuarios, por ejemplo, declarándolas estáticas en la ApplicationInstance.

Usa AbstractTableModels:  Muchos desarrolladores nuevos en el uso del componente Table tienen la tentación de usar el DefaultTableModel por su aparente simplicidad comparada con el AbstractTableModel.  En la práctica, usar tu propio modelo basado en AbstractTableModel pude ser un método de crear un Table bastante más limpio y rápido.

Entresijos


getDefaultWindow():  El método ApplicationInstance.getDefaultWindow() devolverá null hasta se haya finalizado la ejecución del método ApplicationInstance.init().

getApplicationInstance():  El método Component.getApplicationInstance() devolverá null si el Component no ha sido registrado, esto es, si no ha sido añadido a un gerarquía cuya Window raiz haya sido asociada con una ApplicationInstance.  El caso típico en el que se presenta este problema es en el constructor, momento en el que un Component no ha podido ser añadido como hijo de una jerarquía.  Pueden ocurrir problemas similares poco despues de que un componente haya sido eliminado de una jerarquía.  Si necesitas acceder a la ApplicationInstance y no puedes garantizar que el Component esté registrado, deberías usar el método estático ApplicationInstance.getActive().

Cambios de propiedad de LayoutData:  Si actualizas una propiedad de un objeto LayoutData, el UpdateManger no la detectará, y por tanto el cambio puede no actualizarse en el cliente.  El modo correcto para este caso es crear en su lugar un nuevo objeto LayoutData e invocar el método setLayoutData() en el Component para reconfigurarlo.  Nunca actualices un LayoutData (o cualquier objeto propiedad) una vez que se ha puesto en funcionamiento.

Propiedades Mutables:  La mayoría de los objetos de Echo2, como Color, Font, y Border son inmutables.  Sin embargo algunos de los objetos de propiedades más complejos son mutables, principalmente por el hecho de que hacerlos inmutables requeriría unos constructures tremendamente complicados.  Un ejemplo de dicho objeto de propiedad mutable se puede econtrar en FillImageBorder.  Incluso si un objeto de propiedad es mutable, bajo ninguna circunstancia debería ser reconfigurado una vez que ha sido puesto en funcionamiento.

Unidades de Medida:  Algunas propiedades de varios Components expresadas usando Extents solamente permitirán ciertos tipos de unidad.  La documentación del API de un Component especificará dichos requisitos si es que existen.  Si se ignoran los requisitos, el Component puede lanzar una excepción cuando se fije la propiedad ilegal.

Powered by Drupal - Design by rubensa based on abac theme by Artinet