Como ordenar los packages de tus apps (Package by features, not layers)

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.

Publicado por Jesus Almaral

Soy ingeniero en Mecatrónica con maestría en Machine Learning, tengo experiencia en lenguajes como Java, Kotlin, Matlab, Android, Python, etc. Actualmente soy desarrollador de aplicaciones móviles, me gusta la música y toco la guitarra, me gusta mucho saber cosas sobre el universo, leer y comer tacos. También me apasiona enseñar.

3 comentarios sobre “Como ordenar los packages de tus apps (Package by features, not layers)

    1. 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 gusta

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: