Android :: Simplificado
Los nuevos Componentes de Arquitectura de Android permiten el desarrollo de aplicaciones Android utilizando técnicas avanzadas de manera fácil y simple. Desafortunadamente, diferentes guías, tutoriales y ejemplos en la web incluyen escenarios que no contemplan las dificultades y complejidades de aplicaciones reales.
For an english version, click here
Objetivos
Arquitectura simple que permita soportar cualquier requerimiento (simple o complejo)
Minimizar la dependencia de librerías externas
Diseño modular para promover reutilización y evitar código confuso (spaghetti-code)
Fundamentos de Arquitectura
Una buena arquitectura provee structura en todos los niveles, haciendo que el proyecto sea fácil de desarrollar, depurar (debug) y probar (test). Esto también facilita el mantenimiento y actividades de soporte, y los más importante: es divertido trabajar en el proyecto.
Uso de Kotlin como lenguaje de programación primario ➟ impone patrones de arquitectura para llamadas asíncronas (coroutines)
Depender totalmente en el Componente de Navegación de Android
Utilizar Material Design para el diseño UX
Uso de ViewBinding y DataBinding, aislando Fragments de toda tarea relacionada a UI
Tomar ventaja de los componentes de ciclo-de-vida (lifecycle-aware components)
Sincronización de datos y soporte fuera de línea utilizando la librería Room persistence
Simplificar llamadas a API remotas utilizando OkHttp, Retrofit y Moshi
Uso de json-server para simular API remotas ➟ simplifica el desarrollo
El Principio Hollywood
"No nos llames, nosotros te llamamos"
Inversión de Control detalla los principios de diseño modular, donde el framework define cómo el sistema trabaja en conjunto, facilitando la separación de intereses (SoC - separation of concerns)
Especialización: cada módulo hace lo que debe hacer ➟ no más, no menos
Encapsulamiento: detalles acerca de la implementación son ocultados de otras capas de forma adecuada
Acoplamiento: previene "daño colateral" cuando se cambian otros módulos
Esto se puede lograr en Android en los componentes más relevantes:
Components de ciclo-de-vida (lifecycle-aware components)
Bindings
Navegación
Estructura del Proyecto
Términos de uso: Todo el contenido del repositorio SimpleAndroid lo puedes utilizar bajo tu propio riesgo.
Contenido organizado dentro de Navigation Graphs
Activity (o incluso un Fragment) contendrá el Navigation Controller
Fragments sólo serán utilizados para relacionar todos los componentes
Definición de políticas de UX para hacer cumplir requerimientos visuales (UI)
Toolbars (superior, inferior, drawer, ...)
Organizaciópn de Git-branches
feature-branches contienen código que aún está en desarrollo
develop-branch contiene código estable que podría ser considerado final
master-branch contiene código final
Artículos
UX Policies - Part 1: The Problem
UX Policies - Part 2: The UX Patterns
UX Policies - Part 3: The Implementation
La traducción al español de los artículos tardará unas semanas...