Necesito buenos ejemplos y mejores prácticas en la arquitectura del programa.¿Cómo organizar una interfaz de usuario de Javascript?
Estoy tratando de construir una interfaz de usuario JS para una aplicación que funciona con Google.Maps. En el primer borrador, el usuario debería ser capaz de dibujar formas geométricas en el mapa de una manera similar a G.M. Luego, las formas se envían a través de AJAX y se muestra la respuesta.
El problema es que el código se complicó solo con la edición de polígonos.
Inspirado por el "Programador de cinta de ductos" de Joel, traté de esbozar un código sencillo que realice acciones e intercambie controladores de eventos, para evitar grandes árboles de if-else. El botón "Nuevo poli" crea un observador para map.onclick, cambia los manejadores de eventos para otros botones u los oculta, y se oculta, etc.
El inconveniente de este enfoque es que el código de manejo de datos se mezcla con la interfaz. Un código que crea un contenedor div para mostrar los datos en el nuevo polígono se encuentra junto al código que trata con G.M o w/los datos de forma. Si quiero revisar la UI, tendré que procesar la aplicación WHOLE.
Podría revisarlo más tarde y mover este código de generación de IU en otro lugar, pero luego vino mi programador principal. Por el contrario, insistió en el enfoque de "mensajes": un sistema simple de eventos donde los objetos se suscriben a los eventos y los activan. El código de interfaz puede aislarse perfectamente del manejo de datos y hablar con G.M, pero ahora cada oyente debe verificar si este mensaje es correcto.
Por ejemplo, al hacer clic en una poli en un mapa debe resaltarlo y comenzar a editarlo. Pero no si se está dibujando otro poli. Entonces, algún código de "¿estás hablando?" Es necesario en todas partes.
Agradeceré los buenos ejemplos de enfoques de arquitectura de IU.