Esta es la manera que me ha funcionado mejor para ordenar las carpetas (Packages) de mis aplicaciones, en especial en Android pero también en otros lenguajes y frameworks como Django y NodeJs. La manera es el siguiente: Ordena tus packages por características, no por capas.
Vamos a verlo con un ejemplo.
Supongamos que tienes una app de Android que tiene 3 pantallas: Main, Details y Settings, además de que trae información de internet. Al ordenar por capas, los packages de tu app se verían algo así.
- Activities
- ViewModels
- Repositories.
- Services.
Ahora, si ordenamos la misma app por características, se verá algo así:
- Main
- Details
- Settings
- Api
Ahora, en la programación interviene mucho el feeling y no hay respuestas correctas o incorrectas, pero la forma que más me ha funcionado a mí es la segunda. Esta forma me permite detectar más rápido qué clases se relacionan entre sí, buscar errores y hacer debug de manera más fácil, en especial cuando la aplicación crece mucho.
Otra cosa que me funciona es usar un modelo híbrido de ambos cuando las apps se vuelven más complejas, veamos el siguiente ejemplo, este es de una app que tengo llamada Todogs, estoy agregando una pantalla de perfil donde podrás agregar perfiles de tus perros para llevar registro de sus vacunas, entre otras cosas. En este caso creé un package «profile», pero como dentro de este package necesito varias pantallas: Ver, crear, enlistar, editar, lo puse de esta manera.
Cómo puedes ver en este caso tengo una carpeta «Profile». Como tengo perfil de persona y perfil de perro creé una subcarpeta dogProfile, dentro de ella tengo las clases necesarias para los perfiles de los perros, pero aparte, como cada acción (Crear, editar, enlistar) necesita su propia pantalla, ViewModel, etc. creé una sub-sub-carpeta para cada una de ellas, de esta manera tengo todo bien estructurado, lo cual lo hace fácil y rápido de encontrar.
¿Qué opinas de esta manera de acomodar todo? Tus comentarios y feedback son más que bienvenidos como siempre, no olvides suscribirte al blog, a las redes sociales, a mi canal de Youtube, a los cursos y a todo lo que quieras para seguir aprendiendo más sobre diseño, programación y emprendimiento.
Concuerdo con tigo en la forma de organizar el codigo por funcionalidades que por capas ya que es mas intuitivo
Me gustaMe gusta
¿Que opinas de los criterios de «Clean Arquitecture»? Me han insistido bastante con los mismos cuando entregué una API realizada en Kotlin.
Link a la API para revisar la arquitectura: https://github.com/Mgobeaalcoba/api_rest_meli_challenge_public
Me gustaMe gusta
Buena pregunta, clean architecture ayuda mucho para tener tu app ordenada y para testing que es super importante, ahí mi consejo es que sí te recomiendo aprenderlo tanto por estas dos razones como porque muchas empresas ya lo usan y lo piden. Algo que sí quiero agregar, y esta es una opinión muy personal, es que he visto que muchos programadores tienden a abusar al integrar una arquitectura y quieren dividir las clases en muchísimas mini clases, haciendo la navegación entre el código muy difícil, es un poquito de feeling saber dónde parar para que quede testeable y legible.
Me gustaMe gusta