¿Cómo usar Clean Architecture para Android?

La arquitectura limpia puede ayudar a desarrollar y mantener aplicaciones de software con menos personas. ¿Cómo usar arquitectura limpia para Android? Tome los siguientes pasos:

1. Comprender los detalles y el valor de la arquitectura limpia para las aplicaciones de Android

¿Por qué debería implementar una arquitectura limpia en el desarrollo de Android? Pensar en la siguiente serie de preguntas proporcionará claridad:

A. ¿Por qué usar arquitectura de software?

Necesita una arquitectura de software para administrar las complejidades de una aplicación de software. Al elegir la arquitectura correcta, puede ofrecer funcionalidad de manera efectiva. También se ocupa de la capacidad de prueba, la mantenibilidad, la seguridad, la escalabilidad, el rendimiento, etc. al elegir la arquitectura adecuada.

Puede optar por no centrarse en la arquitectura del software en un proyecto simple. Sin embargo, ciertamente debe elegir el patrón de arquitectura adecuado para un proyecto complejo.

B. ¿Qué impulsó la creación de una arquitectura limpia?

Un patrón de arquitectura efectivo debe seguir un conjunto de 5 principios en la mayor medida posible. Estos principios ayudan a desarrollar código mantenible. Puede crear una aplicación flexible usándolos. Ayudan a desarrollar código de calidad, lo que facilita la comprensión de la aplicación.

Juntos, estos 5 principios se conocen como los “principios SÓLIDOS”. Estos son los siguientes:

  • Responsabilidad única: un componente de software debe tener una sola responsabilidad. Debe tener solo una función para cada componente.
  • Abierto-cerrado: los programadores deben poder ampliar la funcionalidad de un componente sin afectarlo negativamente. No deberían tener que modificar sus extensiones para esto.
  • Sustitución de Liskov: suponga que tiene una clase que tiene una subclase en una aplicación. Puede representar el uso de la clase base con la subclase y no necesita interrumpir la aplicación para esto.
  • Segregación de interfaces: los programadores deben tratar de tener muchas interfaces más pequeñas. Deben evitar tener una interfaz grande. Tener muchas interfaces más pequeñas eliminará la necesidad de que una clase implemente métodos innecesarios.
  • Inversión de dependencia: el principio de dependencia exige que los módulos de nivel superior no tengan ninguna dependencia de los módulos de nivel inferior. Los componentes de software deben depender de abstracciones. No deberían depender de los detalles de implementación concretos.

Hay varios patrones de arquitectura de software. Sin embargo, tenían algunas lagunas en la implementación de uno o más de estos principios. Eso generó los siguientes desafíos:

  • La interfaz de usuario se combinó con otras capas de la arquitectura de manera ineficaz.
  • La capa de lógica empresarial a menudo se combina con el almacenamiento persistente.
  • La aplicación no fue suficientemente comprobable.

Maximizar el uso de los principios SOLID resolvería los desafíos anteriores. Esta búsqueda impulsó la creación de una arquitectura limpia.

C. ¿Qué es arquitectura limpia?

Robert C. Martin, también conocido como “Tío Bob”, creó la arquitectura limpia para maximizar el uso de los principios SOLID. Presentó su solución por primera vez en 2011 en forma de un artículo llamado “Arquitectura limpia”.

El patrón de “arquitectura limpia” es un patrón de arquitectura de software con capas. Este patrón tiene una regla de dependencia que establece que las capas internas no pueden depender de las capas externas. Cualquier código en la capa interna de una aplicación no puede hacer referencia a ningún código en la capa externa. Estas capas se verán como una cebolla si intenta visualizar esta regla de dependencia.

La arquitectura limpia no exige la cantidad de capas que debe tener en su aplicación. Puede elegir el número de capas según sus requisitos. Sin embargo, debe seguir la regla de dependencia mencionada anteriormente.

Las aplicaciones que usan el patrón de arquitectura limpia a menudo tienen las siguientes 5 capas:

  • Presentación: La capa de presentación interactúa con la interfaz de usuario (UI).
  • Casos de uso: Esta capa también se denomina “interactores”. Esto define las acciones que un usuario puede desencadenar.
  • Dominio: la capa de dominio consiste en la lógica comercial de su aplicación.
  • Datos: La capa de datos incluye las definiciones abstractas de todas las fuentes de datos relevantes.
  • Framework: esta capa consiste en las interacciones con los SDK y frameworks relevantes. Esta capa le ayuda a implementar la capa de datos.

D. ¿Cuáles son las ventajas de usar la arquitectura limpia de Android?

La arquitectura limpia tiene varias ventajas. Muchos desarrolladores de Android han adoptado este patrón para su arquitectura de aplicaciones de Android. Las ventajas son las siguientes:

  • Puede implementar nuevas características rápidamente.
  • Puede implementar bien la separación de preocupaciones.
  • Los desarrolladores pueden ver fácilmente los casos de uso comercial. Les proporciona claridad.
  • La arquitectura limpia brinda flexibilidad ya que no está atado a marcos o bases de datos específicos.
  • Este patrón de arquitectura le ayuda a utilizar el “diseño basado en dominios” (DDD). Este enfoque de diseño es útil en proyectos complejos de desarrollo de software.
  • Puede probar mejor su aplicación con una arquitectura limpia. Puede probar varias interfaces e interacciones externas fácilmente.
  • La ejecución del proyecto se vuelve más rápida.

E. ¿Cuándo debería usar la arquitectura limpia de Android?

Puede utilizar el patrón de arquitectura limpia para proyectos complejos. Este patrón de arquitectura ayuda a ejecutar grandes proyectos.

Si tiene que implementar una gran cantidad de lógica comercial, entonces el patrón de arquitectura limpia es muy útil. Proporciona claridad. Los miembros del equipo pueden colaborar de forma más eficaz.

La arquitectura limpia tiene una curva de aprendizaje empinada. Eso podría compensar sus beneficios en proyectos pequeños. Por lo tanto, piense detenidamente antes de implementarlo en proyectos simples.

2. Implementar una arquitectura limpia en una aplicación de Android

Haga lo siguiente para implementar el patrón de arquitectura limpia en una aplicación de Android:

2a. Configurar la estructura del proyecto.

Nota: Puede consultar el tutorial de arquitectura limpia de raywenderlich para Android para más detalles.

Abra un proyecto en Android Studio. Divida el proyecto en dos módulos, que son los siguientes:

  • El módulo “app”: Es un módulo existente.
  • El módulo “core”: Consiste en el código que no depende de ningún SDK de Android.

Cree el módulo “núcleo” siguiendo los siguientes pasos:

  • Utilice el menú “Archivo > Nuevo > Nuevo módulo” en Android Studio.
  • Seleccione “Biblioteca Java” en Android Studio y nombre la biblioteca “núcleo”.
  • Edite el campo de nombre del paquete de Java e ingrese un nombre de paquete.
  • Haga clic en “Finalizar”, que iniciará la operación de sincronización de Gradle.
  • Abra “build.gradle” en el módulo central para aplicar los complementos y dependencias relevantes.
  • Actualice “build.gradle” para crear una referencia al módulo “núcleo” del módulo “aplicación”.
  • Deje que se ejecute el proceso de sincronización de Gradle.
  • Cree paquetes para dominio, datos e interactuadores.

2b. Crear la capa de dominio

La capa de dominio de su aplicación consistirá en todas las reglas comerciales. Haga lo siguiente para crear esto:

  • Mueva los modelos de “marcador” y “documento” al módulo central desde el proyecto de inicio.
  • Mueva los archivos de “marcador” y “documento” del módulo de la aplicación al módulo central.
  • Complete el proceso haciendo clic en el botón “Refactorizar”.

2c. Crear la capa de datos

Esta capa contiene las definiciones abstractas para acceder a fuentes de datos, por ejemplo, bases de datos. Cree esta capa siguiendo los siguientes pasos:

  • Utilice el “patrón de repositorio”.
  • Agregue una interfaz de “fuente de datos” y una “clase de repositorio” para cada modelo.

Al usar el patrón de repositorio, puede implementar el principio de inversión de dependencia de manera efectiva.

2d. Agregar repositorios

Seleccione el archivo del proyecto en el módulo principal. Agregue un archivo/clase Kotlin o Java usando las opciones de menú en el IDE. Asígnele el nombre correspondiente y haga clic en “Finalizar”. Agregue código relevante para la interfaz mencionada anteriormente como “importar”, “agregar”, “leer” y “eliminar”.

Repita el proceso anterior para agregar más interfaces y fuentes de datos. Escriba el código relevante en estos archivos.

2e. Crear la capa de casos de uso

Esta capa contendrá el código para convertir las acciones del usuario y pasarlas a las capas internas de su aplicación. Cree una clase para cada caso de uso. Para ello, cree un archivo Java/Kotlin en su proyecto.

Agregue el código relevante a este archivo. Asegúrese de que un caso de uso tenga una sola función. Repita este proceso para cada caso de uso.

2f. Crear la capa del marco

La capa del marco consiste en el código que implementa las interfaces especificadas en la capa de datos. En su aplicación de Android, la capa del marco dependerá del SDK de Android. Debe crear esta capa en el módulo “aplicación”.

Cree un nuevo archivo Java/Kotlin en el módulo “aplicación” del proyecto. Identifique una fuente de datos de la capa de datos. En el nuevo archivo Java/Kotlin, escriba el código necesario para implementar esa fuente de datos. Repita este proceso para todas las fuentes de datos especificadas en la capa de datos.

2g Crear la capa de presentación

La capa de presentación en su aplicación de Android contiene el código relacionado con la interfaz de usuario. Esta capa está en el mismo círculo exterior que la capa del marco. Por lo tanto, la capa de presentación puede usar las clases especificadas en la capa de marco.

Puede utilizar patrones de diseño conocidos como MVP, MVI o MVVM. Muchos desarrolladores de Android entienden muy bien el patrón MVVM, por lo tanto, puede optar por él.

El patrón MVVM tiene los siguientes 3 componentes:

  • Ver: trae la interfaz de usuario a los usuarios.
  • Modelo: Este componente consiste en los datos y la lógica de negocios.
  • ViewModel: es el vínculo entre la interfaz de usuario y los datos.

Cuando implemente el marco MVVM en una arquitectura limpia, no dependerá de los modelos. En su lugar, la aplicación se comunicará con los interactores que creó en la capa de casos de uso. Continúe con la implementación de MVVM. Esto completó la implementación de la arquitectura limpia en su aplicación de Android.

¿Intenta implementar la arquitectura limpia en su proyecto de desarrollo de Android? Póngase en contacto con DevTeam.Space contratar desarrolladores competentes.

preguntas frecuentes

1. ¿Debo usar Kotlin o Java para implementar una arquitectura limpia para Android?

Puede usar Java o Kotlin. La arquitectura limpia lo ayuda a escribir código de calidad y es útil en proyectos complejos. No depende de un lenguaje de programación en particular.

2. ¿Debo usar algún SDK de Android en particular para implementar la arquitectura limpia?

Debe usar Android Studio, el popular IDE para el desarrollo nativo de Android. La arquitectura limpia no depende de ningún otro SDK de Android.

3. ¿Puedo esperar que el código fuente de mi aplicación de Android sea más legible con una arquitectura limpia?

La arquitectura limpia lo ayuda a escribir aplicaciones de software que son más fáciles de probar y mantener. Sin duda, su base de código será más fácil de entender si implementa este patrón de arquitectura.

Deja un comentario