
Varias de las charlas de Codemotion Madrid 2025 tienen como objetivo enseñarles a los asistentes distintas técnicas y estrategias que les permitan diseñar arquitecturas de software de alta calidad. Una de las más importantes es el principio de Inversión de Control (IoC), ideal a la hora de crear arquitecturas desacopladas y mantenibles a largo plazo.
En la charla Flip the script: Dependency inversion in JS/TS based mobile apps (en inglés), Samantha Campisi (Sr. Mobile Engineer) y Alejandro Weichandt (Sr. Mobile Engineer) de Lastminute.com nos explicarán las ventajas de aplicar técnicas de inversión de control, así como estrategias que se pueden poner en práctica en el desarrollo de aplicaciones móviles.
Contexto de la charla
Escribir aplicaciones móviles de código limpio, escalables y sostenibles a largo plazo debería ser el principal objetivo de cualquier desarrollador mobile. Y aunque esto se puede lograr de muchas formas, no hay nada mejor que conocer algunos de los principios básicos del diseño de software que nos ayuden a estructurar mejor nuestro código.
Estilos de arquitecturas como Clean Architecture, Hexagonal Architecture o DDD (Domain-Driven Design) han demostrado ser efectivos para construir aplicaciones robustas y mantenibles. Sin embargo, todos estos patrones comparten un concepto común: la inversión de control, un principio que permite desacoplar los diferentes componentes de nuestras aplicaciones y hacerlas más flexibles.
¿Qué es la inversión de control?
La Inversión de Control (IoC) es un principio de diseño que revierte la dirección tradicional de las dependencias en el código. En lugar de que los módulos de alto nivel gestionen sus dependencias directamente, estas les son proporcionadas desde fuera.
Este enfoque, conocido también por el sobrenombre de “Principio de Hollywood” (por aquello del ya te llamaremos), permite reducir el acoplamiento entre componentes, así como que las diferentes partes de una aplicación sean más reutilizables y fáciles de probar.
En consecuencia, esto ofrece la posibilidad de crear aplicaciones más flexibles y adaptables a los cambios. Al promover una mejor separación de responsabilidades, el código resulta más fácil de escribir, entender y mantener. La implementación de IoC es especialmente útil en aplicaciones móviles escritas en JavaScript o TypeScript, donde la complejidad puede crecer rápidamente si no se gestiona adecuadamente.
No podemos olvidar que IoC es a su vez la base del principio de Inversión de Dependencias (Dependency Inversion Principle, DIP), el cual establece que los módulos de alto nivel no deben depender de los módulos de bajo nivel, sino que ambos deben depender de abstracciones.
Esto permite separar la implementación de la lógica de negocio de la infraestructura técnica, permitiendo que cada capa evolucione de manera independiente. Esta separación facilita la adaptación a cambios en los requisitos del negocio sin afectar a la infraestructura subyacente, y viceversa.
¿Qué técnicas y estrategias existen para aplicar inversión de dependencias en el diseño de arquitecturas móviles?
Cada una con sus pros y contras, en la actualidad existen varias estrategias y técnicas para aplicar inversión de dependencias en el diseño de arquitecturas para aplicaciones móviles. Algunas de las más populares son:
- Soluciones manuales: son simples de implementar, ya que por lo general no necesitan de librerías externas. Es habitual que los desarrolladores utilicen Context API, singletons inyectados y funciones currificadas. Hay que tener en cuenta que, a pesar de su simpleza, pueden volverse difíciles de mantener y escalar a medida que los proyectos crecen.
- Service Locator: es un patrón de diseño que centraliza la gestión de dependencias en un solo lugar. Este patrón proporciona un punto de acceso global para obtener las dependencias necesarias, aunque puede hacer que el código sea menos transparente y más difícil de probar. A menudo se implementa como una alternativa más sencilla a la inyección de dependencias completas.
- Inyección de dependencias (DI): es una técnica más robusta y flexible que implementa el principio de inversión de control mediante contenedores DI específicos. Frameworks como InversifyJS o TypeDI ofrecen características avanzadas como inyección automática, gestión del ciclo de vida de las dependencias y resolución automática.
- Librerías externas: existen numerosas librerías de código abierto diseñadas específicamente para facilitar la inversión de dependencias en aplicaciones JavaScript/TypeScript. Algunas de las más populares son InversifyJS o.
La charla: Flip the script: Dependency inversion in JS/TS based mobile apps
Alejandro Weichandt (Senior Mobile Engineer en Lastminute.com) y Samantha Campisi (Senior mobile engineer en Lastminute.com) nos ofrecerán una interesante charla alrededor de estos conceptos tan relevantes. El objetivo es que los asistentes puedan aprender cómo aplicar buenas estrategias de inyección de dependencias para garantizar una arquitectura escalable mediante el uso de código limpio.
Ambos nos explicarán las ventajas de aplicar técnicas de inversión de control y diferentes estrategias para ponerlas en práctica en proyectos de desarrollo de aplicaciones móviles. El objetivo final será que los asistentes aprendan a diseñar dominios lo más independientes y flexibles posibles, sin perder nunca de vista la lógica y los requisitos empresariales.
Los ponentes
- Samantha Campisi (Senior mobile engineer at Lastminute.com): Samantha ha estado inmersa en el mundo móvil con React Native durante los últimos 8 años. Ha trabajado en una gran variedad de apps, desde redes sociales a crypto wallets pasando por marketplaces online y ahora en el acompañamiento y gestión de viajes.
- Alejandro Weichandt (Senior Mobile Engineer at Lastminute.com): trabajando con móviles desde su primer trabajo, llegando a trabajar con todo tipo de plataformas, desde Apple y Android, a Blackberry y todos los demás dispositivos móviles Java ME, así como distintas industrias, pasando por la escena del gaming, luego fintech, y en la actualidad en el sector viajes. Le apasiona hablar de desarrollo de software en general.