TECHDENCIA 11
Aplicaciones móviles declarativas

Aplicaciones móviles declarativas

Imagina que llegas a un nuevo restaurante donde quieres cenar. Una vez allí, podrías ver que hay una mesa libre con el espacio suficiente para todos los comensales, que además no tiene ningún cartel de reservado y pedirle al camarero que os siente en esa mesa. 

Otra opción sería centrarte en la solución y pedir directamente una mesa al camarero, delegando en él todas las comprobaciones necesarias. Hasta el momento, el desarrollo de pantallas en aplicaciones móviles se centraba en la primera opción. Sin embargo, con la aparición de librerías como Compose y SwiftUI, el paradigma cambia a una programación declarativa, ajustándose más a la segunda opción de nuestro ejemplo.

Hasta ahora, cuando queríamos crear la interfaz de una aplicación (es decir, la pantalla que vemos en nuestro dispositivo), solo definíamos cómo debían verse sus componentes en ese momento inicial. 

Por ejemplo, al hacer la navegación a una pantalla de nuestra aplicación, indicábamos que debía estar compuesta por un título a tamaño 26, en negrita y un botón verde centrado en la pantalla. Cuando algún componente debía cambiar (por la interacción del usuario o por alguna otra causa), era necesario buscar dentro de la estructura el componente concreto y actualizar su estado. Tomando el ejemplo anterior, para actualizar el color del título al pulsar el botón, debíamos navegar entre la lista de componentes, llegar al título e indicarle que cambiase su color.

En la programación declarativa ofrecida por Swift UI y Compose cada componente sabe cómo debe crearse de acuerdo al estado de la pantalla. Según este paradigma no sería necesario que llegásemos al título ya creado para indicarle qué color debe tener en cada momento. El título ya sabe con qué color debe crearse tanto si se ha pulsado el botón como si no. Al pulsar el botón, el título escuchará este cambio de estado y volverá a crearse con esta nueva situación.

Definir interfaces de usuario de forma declarativa posee una importante ventaja frente a definirlas de manera imperativa (la forma tradicional). En este último caso, es necesario modificar los componentes ya existentes cuando se produce un evento. Esto puede aumentar la probabilidad de aparición de errores, puesto que cuantos más componentes haya en pantalla, más complicado será mantener de forma manual sus estados internos, consiguiendo que toda la pantalla quede en un estado general consistente.

En contraposición, con la programación declarativa no es necesario modificar los componentes existentes, sino indicarles desde el principio cómo deben crearse en función del estado general de la aplicación. Cada vez que se produce un cambio de estado, la interfaz se recompone de forma automática, haciendo que cada componente vuelva a crearse (solo en caso de ser necesario cambiar) para ajustarse a la definición de estados que se le dio al inicio. 

Con Compose y SwiftUI, cada componente es responsable de mantenerse de forma correcta en cada estado general, siendo nuestra única responsabilidad el cambiar dicho estado. ¡Una mesa para cenar, por favor!

image ¡Tuitea esta tendencia!