
Mientras uno va leyendo este libro, "Essential ActionScript 2.0" de Colin Moock, es inevitable no parar de repetirse cosas como "que bien escribe este chico" o " que sencillo lo hace". Esto es algo que los que ya disfrutaron leyendo y aprendiendo con "ActionScript for Flash MX: The Definitive Guide" saben de sobra y será una de las principales razones para haber comprado esta "continuación". Esa sencillez para explicar conceptos y mostrar contenidos junto con la capacidad de revisar y visitar cada uno de los rincones y recovecos del lenguaje de una manera tan exahustiva, pueden ser, desde mi punto de vista, las dos principales razones del enorme éxito de los libros de Moock para Flash.En este nuevo libro Colin no intenta repetirse y copiar la estructura que le dio tan buenos resultados la última vez, pues lo que ya explicó sigue siendo totalmente válido hoy día, aunque eso si,...muchos de los conceptos (en particular los referentes a OOP para Flash MX ) estén ya obsoletos en la última versión de la herramienta. La anterior entrega queda pues como estupendo manual de referencia y acompañante de este nuevo libro que explica en profundidad el nuevo estilo de programar ActionScript en esta nueva versión 2.0 del lenguaje dejando de lado el viejo estilo prototipado para dar paso a la típica sintaxis de clases. Un estilo que bebe mucho, sobre todo, de otro lenguaje muy conocido y respetado: Java.
Antes de entrar a comentar las partes del libro en si, me gustaría hacer hincapié en la importancia de adoptar las métodologías OOP descritas en EAS2 en nuestras creaciones. Ya sea a la hora de crear juegos, sitios web o complejas aplicaciones RIA. Los beneficios son muchos (software escalable, mantenible, organizado, integrable facilmente con un sistema de versiones (CVS), etc...). En los últimos meses todavía he podido leer comentarios por la red de personas que dicen no ver el sentido de la programación orientada a objetos... Yo soy de la opinión de que hay que hacer absolutamente todo en OOP, puesto que a la larga se puede comprobar que todo son ventajas cuando los proyectos empiezan a crecer y a volverse dificilmente manejables. Es por esto por lo que Macromedia a puesto tanto enpeño en que ActionScript evolucionase a esta versión 2.0 y lo que nos lleva a la importancia de este libro que realiza una labor estupenda explicándonos todo lo que nos hace falta saber sobre el lenguaje, sobre la manera de aplicarlo correctamente, sobre las metodologias y "Best Practices" para empezar creando código de calidad y como crear proyectos Flash con AS2.0 desde cero. Creo que sin este importante cambio hoy día sería extremadamente difícil plantear proyectos grandes en un departamento de TI de una gran empresa y que confiasen en Flash como una solución factible y fiable.
Centrandonos ya en el libro, este tiene alrededor de 500 páginas (la mitad de grueso que su antecesor), y está estructurado en tres partes:
- Part I .- The ActionScript 2.0 Languaje
- Part II .- Application Development
- Part III .- Design Pattern Examples in ActionScript 2.0
Part I .- The ActionScript 2.0 Languaje.
Todos los recovecos del lenguaje son revisados en este apartado: Clases, Tipos de datos, Herencia, Polimorfismo, Paquetes, Interfaces, y un estupendo capítulo sobre la nueva manera de tratar los errores mediante excepciones (una parte de la que existen para mi gusto pocas referencias donde mirar). Todo ello cubierto con ejemplos que explican de manera clara y precisa la teoria. Como ejemplo principal Colin crea una clase que implementa un visor de imagenes para demostrar claramente los conceptos explicados. El capítulo sobre herencia es bastante extenso como cabría de esperar en un libro sobre OOP pero además se empieza a introducir otro concepto fundamental al que volveremos una y otra vez durante el resto del libro: la composición.
Algunos de los puntos más destacables a mi entender son los siguientes:
Part II .- Application Development.
Una vez desgranado el lenguaje en profundidad Colin nos muestra en esta segunda parte algunos conceptos básicos sobre como empezar a usarlo. Para ello nos muestra un modo de desarrollar una aplicación Flash basandose en gran parte en la manera de organizar los proyectos en Java. Desde la preparación del directorio y subcarpetas de trabajo que deberiamos usar hasta como debe de ser el documento plantilla y como organizar nuestras clases. Esta manera aunque no es la única si que (como se pretende) es muy efectiva y puede ayudarte a empezar para luego ir modificandola según tu propio estilo y necesidades.
En esta parte el ejemplo principal viene a demostrar este modelo de desarrollo con una aplicación de cambio de divisas que además usa algunos componentes del framework v2 de Macromedia. Algo que hay que tener en cuenta es que este libro NO trata sobre el framework de componentes v2, y solo muestra algunos ejemplos de como usarlo en nuestras aplicaciones, pero suficientes como para entender cual es la metodología a seguir en el uso de dichos componentes.
Un punto importante a destacar es el manejo de eventos y de la clase EventProxy de Mike Chambers (junto con la revisión de Colin en el libro). Hoy día con el updater 2 y como ya apunta Colin en el artículo de su blog "EventProxy vs mx.utils.Delegate" dicha clase ya no es necesaria gracias a mx.utils.Delegate.
Los dos últimos capítulos de esta parte estan dedicados a como manejar la herencia en los MovieClips y como distribuir librerías de clases respectivamente. Si bien, el primero de ellos es más importante en cuanto a utilidad, el segundo nos habla de ciertos conceptos (como el fichero de exclusión XML o la creación de librerías estáticas y dinámicas) que podrían quedar desapercibidos por muchos de nosotros debido a que tanto en la documentación como en los blogs de la comunidad han sido comentados en contadas ocasiones.
Part III .- Design Pattern Examples in ActionScript 2.0
Una vez que ya sabemos lo necesario sobre el lenguaje y como crear proyectos desde cero ¿Como usar todo este conocimiento para resolver problemas reales?. Muchos de vosotros agradecereis estos últimos capítulos pues es aquí donde se exponen una de las herramientas principales de todo buen arquitecto de aplicaciones: Los patrones de diseño.
Esta parte es una introducción a dichos recursos y a su importancia en el desarrollo de software en la actualidad. Para ello se explican 4 patrones de los más extendidos: Observer, Singleton, MVC y Delegation Event Model . Estos se aplican a Flash para que el lector coja el pulso de que son y para que sirven y realiza un estupendo papel remarcando el potencial y la necesidad hoy día de tener un buen arsenal de este tipo de soluciones en mente cuando nos toca diseñar software. Además de la explicación se realiza un ejemplo práctico que sirve al lector para entender la finalidad y alcance de la solución adoptada.
El desarrollo de grandes proyectos de software supone un gran cantidad de problemas a los que el arquitecto debe hacer frente. Quizá el mayor de estos es la organización del código en clases y la interrelación entre estas. Es en este último punto donde los patrones vienen al rescate y donde la experiencia en su correcta utilización nos hará crear soluciones facilmente mantenibles y escalables.
El conjunto de patrones escogido para iniciar al lector no podía haber sido más acertado. Con el patrón Observer podrás notificar del cambio de estado de un objeto a todos los que estén subscritos para recibir esas actualizaciones. El ejemplo elegido en este capítulo es un Logger que notifica los mensajes a diferentes vistas (observadores). En dicho ejemplo también encontramos implementado un Singleton. Este puede ser seguramente el patrón más popular y más usado cuando queremos asegurar la existencia única de un determinado objeto en una aplicación. Atención especial me merece el patron Model View Controller(MVC) imprescindible en toda aplicación medianamente compleja donde la separación de papeles es importantísima para poder ir añadiendo funcionalidad de una manera fácil y escalable sin comprometer la estructura de la aplicación. El ejemplo utilizado en este caso es una aplicación que representa un reloj donde tenemos varias vistas (una analógica y otra digital además de un panel de botones), un modelo que maneja la información del tiempo y un controlador que recoje la entrada del usuario a través del panel de botones para modificar el modelo y que este refresque las tres vistas con la nueva información. Por último el llamado Delegatión Event Model, aunque similar al patrón Observer, tiene protagonismo propio debido a que normalmente necesitaremos más flexibilidad de la que nos proporciona este último cuando tengamos distintos eventos que deban ser manejados por metodos diferentes. En este último capítulo el ejemplo implementado (llamado NightSky) es una clase que genera eventos al azar representando un cielo en el que aparecen estrellas según se dispara el evento correspondiente.
Este puede ser un buen punto de inicio para que el lector pueda luego seguir autoformandose en diferentes patrones. Al fin y al cabo los frameworks de más peso hoy día para la creación de aplicaciones RIA (como ARP o Cairngorm) son en definitiva una buen ensamblaje de un subconjunto de patrones que trabajan estupedamente juntos.
Apéndices.
El libro concluye con un par de apendices. El primero es un referencia rápida del lenguaje con anotaciones de las erratas en las definiciones de los tipos de las diferentes clases (nuevamente NO se incluyen las clases del framework v2), pero solo para hasta el updater 1. El segundo son algunas anotaciones de las diferencias con el standard ECMAScript Edition 4 en el que está basado el lenguaje.
Conclusión.
Sin duda este libro es lo que los ingleses denominan "a must have" (me encanta esa expresión...) y están totalmente en lo cierto. Todo forofo de la tecnología Flash y del lenguaje ActionScript debería reservar un hueco en su estantería para una copia de este libro que junto con ASDG son piezas fundamentales para conocer bien el lenguaje que controla a "la bestia". No solo se trata de la información que trae, que es mucha y se nota la dedicación y esfuerzo pueste en el detalle que su autor a invertido en este libro...si no que su lectura resulta muy amena, algo de lo que pocos libros técnicos pueden jactarse.
...Ya solo faltaría que los señores de O'Reilly nos sorprendieran con una versión traducida al español ¿no sería eso estupendo?.