Tras el anuncio de la salida de Android Studio 2.0, ya escribimos un post sobre las novedades que éste incluía y cómo iba a afectar en su día a día a los desarrolladores. Hoy queremos centrar la atención en una de las novedades más llamativas a nivel de desarrollo: el Data Binding. Para ello, hemos pedido a nuestro SlashTeam de Android su opinión y esto es lo que nos han contado.

data binding androidPongámonos en antecedentes

Desde el inicio de los tiempos (bueno, desde que se lanzó Android allá por 2008), miles de  desarrolladores nos hemos adentrado en las profundas y oscuras aguas de su SDK en busca del conocimiento necesario para desarrollar aplicaciones estables, escalables y eficientes. Cuando comienzas a bucear en estas aguas, una de las primeras cosas que aprendes es cómo modificar una vista desde el código de nuestra activity. Para ello, se nos presenta el que debe ser uno de los métodos más utilizados en Android, el tristemente célebre findViewById(int id). Gracias a este método podíamos localizar una vista en nuestro Layout asociado a una Activity y modificarla con los valores que creyéramos convenientes en cada momento. Durante años, los developers leímos y probamos en nuestras carnes mil y una veces las maldades de este método; lo ineficiente que es cuando hay vistas con varios niveles de jerarquía o lo absurdo de tener que escribir diez líneas de código para obtener referencias a diez componentes de nuestra vista. Por suerte ¡estos tiempos quedaron atrás (al menos para algunos de nosotros)! Así, en marzo de 2013 el archiconocido Jake Wharton lanzaba la primera release de su librería Butter Knife. Esta nos permite, mediante simples anotaciones, enlazar los componentes de nuestra vista con variables de nuestra actividad, poniendo fin así al reinado de findViewById(int id). Esto no acaba aquí, como ya hemos comentado, hace unos meses Google anunció el lanzamiento de Android Studio 2.0 y con éste el de una característica conocida como Data Binding. Dicho en otras palabras: una solución definitiva y que no depende de librerías de terceros al problema del enlazado de las vistas en Android.

¿En qué consiste el Data Binding?

Si habéis desarrollado alguna vez para dispositivos iOS/Mac, este concepto os resultará familiar, ya que es similar a los IBOutlet e IBAction que se utilizan en estas plataformas. La idea detrás de Data Binding es proporcionar al desarrollador una conexión bidireccional entre una vista y una variable, de forma que cuando se modifique una de las dos, la otra también lo haga. Es a partir de esta sencilla idea que se desarrolla el concepto de Data Binding y se amplía de forma que a día de hoy (recordemos que aún se encuentra en fase beta), se pueden enlazar tanto variables como eventos asociados a las vistas (sí, habéis leído bien, ¡También diremos adiós al onClick(View v)!). Además, también:
  • Se proporciona un lenguaje de expresión que permite la modificación de los valores de dichas variables
  • Se incluyen operadores condicionales y el operador ‘??’ para evitar NullPointerException
  • Se hace hincapié en el uso del patrón Observer para terminar de cerrar el círculo alrededor de esta nueva característica

Pero no es oro todo lo que reluce…

Y es que, si ya era complicado mantener una arquitectura limpia y ordenada en nuestras aplicaciones Android debido al anti-patrón GodObject que se nos impone a los desarrolladores al tener que construir nuestras aplicaciones en base a Activities, el hecho de contar con una comunicación bidireccional entre la vista y la actividad redunda en un acoplamiento más fuerte entre estos dos componentes. Esto añade un grado adicional de dificultad a la hora de mantener la independencia entre los distintos componentes y módulos de nuestra aplicación.

A pesar de los pros y los contras de esta nueva funcionalidad, sólo el tiempo dirá si logra imponerse como una alternativa sólida a findViewById(int id)/Butter Knife o se queda en el cajón desastre de Google siendo usada únicamente por los curiosos y los locos que buscan nuevos retos. ¿De cuáles sois vosotros?

Autor: Diego Ojeda

Recommended Posts

Leave a Comment