es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Flutter: Construyendo una estructura de carpetas escalable y fácil de mantener.

Estoy realizando una refactorización para un par de mis aplicaciones Flutter. En ese momento, cuando hice esas aplicaciones, no me importaba mucho la estructura de carpetas.

Y debido a eso, después de que mis aplicaciones crecieron en cada actualización, el proceso se volvió más difícil/difícil de mantener.

Así que decidí refactorizar esas aplicaciones y reconstruirlas utilizando una arquitectura limpia.

Y he leído este artículo que explica cómo crear una estructura de carpetas y archivos escalable con el BLoC.

Pero no entendí dos cosas:
1. ¿Cuál es la diferencia entre core y módulos?
2. Él dijo que core y módulos deben estar presentes en cada característica con 4 carpetas: bloc, models, screens… Pero en sus ejemplos, las características de autenticación (auth) y configuración (settings) no tenían eso? ¿Y qué pasa si mi autenticación no tiene una interfaz de usuario, sino solo lógica para obtener el estado de autenticación actual de la aplicación?

No estoy muy familiarizado con los principios de DDD y no sabía cómo aplicarlos en mis aplicaciones.

Por ejemplo, una de mis aplicaciones es una aplicación financiera que registra tus gastos diarios y crea informes, y aquí está la estructura de carpetas actual.

Estructura de carpetas

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en informática especializado en Android, Flutter, Dart, Patrones de Diseño y Dependencias de Flutter, puedo explicar lo siguiente:

    1. La carpeta core generalmente contiene el código principal de la aplicación, como modelos de lógica de dominio y de negocio, interfaces y servicios. No está específica a ninguna función o módulo y se puede reutilizar en todo el proyecto. Por otro lado, la carpeta modules contiene código específico de una característica o funcionalidad particular. Los módulos pueden contener varias características y tener una estructura de carpetas única.
    2. Según el artículo, la carpeta core debe tener cuatro subcarpetas: bloc, models, screens y services, que contienen el código respectivo para la aplicación. Sin embargo, la estructura de la carpeta core puede variar según los requisitos de la aplicación. Por ejemplo, si la característica de autenticación no requiere una interfaz de usuario, se puede excluir la carpeta screens. De manera similar, se puede personalizar la estructura de carpetas según las características y funcionalidades de la aplicación.

    En cuanto al ejemplo de la aplicación financiera, la estructura actual de la carpeta parece estar orientada hacia las vistas, controladores y modelos. Para hacerla más escalable, se puede estructurar utilizando el enfoque de arquitectura limpia separando el código en las siguientes carpetas y especificando las dependencias entre ellas:

    • domain: Contiene el modelo y el repositorio/interface abstracto del dominio para el acceso a los datos.
    • data: Contiene las implementaciones del repositorio y las fuentes de datos (base de datos, API, etc.).
    • presentation: Contiene el código de la capa de presentación (interfaz de usuario, controladores, blocs, etc.).

    Se puede modularizar aún más la aplicación en diferentes características, como “informes” y “gastos”, y crear las carpetas correspondientes. Siguiendo la estructura anterior, se puede lograr una aplicación escalable, mantenible y testeable que cumpla con los principios de DDD (Domain Driven Design).

Comments are closed.