Aplicación simple Android en Kotlin que sigue las mejores prácticas de Martin, Robert C., en su libro Clean Architecture: A Craftsman's Guide to Software Structure and Design (2017).
Este ejemplo simplificado se puede considerar una extensión del repositorio más completo y documentado, donde se habla a fondo de las buenas prácticas que hay detrás de la arquitectura de software y se puede encontrar en CleanMovie
No mucho, la teoria sigue siendo la misma que se puede encontrar en CleanMovie. La novedad es que se usa Kotlin, Corrutinas, ViewModel, LiveData y Hilt.
La separación en módulos obedece a cumplir con el enfoque arquitectónico predentendido, en este caso se esta siguiendo el enfoque Paquete por Componente.
No necesariamente todos los proyectos deben ser multimódulo, se puede literalmente copiar todos las clases e interfaces del componente user y ponerlo dentro del modulo app en un paquete llamado por ejemplo "com.vanskarner.cleanexamplekt.features.user" y actualizar lo restante con el mínimo esfuerzo, sin embargo el problema es que se puede saltar niveles como se explica aqui.
En la wiki de CleanMovie se indica que las estructuras de datos no deben tener métodos que conviertan de un formato a otro. Sin embargo, aquí hay extensiones que realizan esa tarea. ¿Existe una contradicción?
No, en absoluto. Aquí es importante tener en cuenta el contexto. Kotlin, con sus extensiones, ofrece la ventaja de la herencia sin sus desventajas. Por lo tanto, no hay contradicción, y es totalmente válido elegir esta forma de mapear, al igual que también sería válido crear una clase dedicada para esa tarea. Ambas opciones son válidas.
Como dije antes, este es un ejemplo simplificado. Si has leído y comprendido la wiki de CleanMovie, no deberías tener problemas para hacerlo tú mismo. En cuanto a las métricas, no he encontrado un software que contenga todas las métricas que nos proporciona JArchitect 😔.
Posiblemente, más adelante, incluiré más ramas utilizando características o detalles adicionales. También, ustedes pueden hacerlo y sugerirlo aquí.
User | ViewModel |
---|---|
UI Android |
---|
Por supuesto, toda buena arquitectura tiene pruebas. En cada componente se encuentran las pruebas unitarias y de instrumentación necesarias.
Sí, fíjate en cómo está construida cada clase, qué modificador de acceso se utiliza en cada clase e interfaz, así como en cómo están dispuestos los paquetes; todo tiene un propósito.
El mismo que ha escrito la wiki y el código de CleanMovie 😁.
Consulte la sección de discusiones AQUÍ.