Hace unos días leía este post de Manu PK sobre un tema que siempre se plantea al arrancar un proyecto y que nunca está claro cuál es la decisión más adecuada a nuestro caso, me refiero a como paquetizar nuestras clases: por funcionalidad o por Capa.
Me ha parecido una buena ocasión para para “traducir” el artículo y comentarlo (y así recordarlo para la próxima ;))
PACKAGE BY LAYER (PBL)
Cuando creamos una aplicación de las primeras cosas que hacemos es organizar en módulos y paquetes (view, controller, services, utils, entity, dao,…).
Con esta paquetización para resolver una funcionalidad o caso de uso tendré clases en cada uno de estos paquetes.
PACKAGE BY FEATURE (PBF)
En esta paquetización se crea un paquete para cada funcionalidad (caso de uso) y todas las clases quedan en ese paquete.
COMPARANDO AMBOS:
| PACKAGE BY LAYER (PBL) | PACKAGE BY FEATURE (PBF) | |
| VENTAJAS | -Al usar frameworks (Hibernate, JSF, Spring) en cada paquete están las clases de una tecnología
-Favorece la modularización y separación de capas en JARS -Simplifica migración/cambio de framework |
-Paquetes con alta cohesión y modularidad
-Bajo acoplamiento entre paquetes -Añadir una nueva funcionalidad sólo implica el uso de un directorio/paquete -Más fácil para navegar |
¿Con cuál os quedáis vosotros? Yo os puedo decir que uso ambos dependiendo del tipo de proyecto, de si prima la simplicidad y agilidad en el desarrollo (entonces uso PBF) o si prima la modularización y separación de capas (PBL).



Replica a Juankar! Cancelar la respuesta