Entiendo la idea del alcance del paquete y, a veces, incluso pensé que lo quería. Sin embargo, cada vez que me establezco con la intención seria de intentar usarlo, descubro que no se ajusta a las necesidades que pensé que serviría.
Mi problema principal siempre parece ser que las cosas que deseo limitar el alcance nunca están en el mismo paquete. Conceptualmente, todos pueden estar vinculados, pero la división lógica de los datos dentro de la aplicación los tiene como paquetes secundarios separados de un paquete más grande.
Por ejemplo, puedo tener un modelo Mission y solo quiero que otras herramientas de Mission, como mis MissionServices, utilicen algunos métodos. Sin embargo, termino con Missions.models y Missions.services como mis paquetes, por lo que MissionModel y MissionService no son el mismo alcance de paquete. Nunca parece que haya una situación en la que los paquetes contengan adecuadamente las cosas que me gustaría tener permisos elevados sin incluir también muchas cosas que no deseo tener esos permisos; y rara vez siento que la ventaja del alcance de un paquete justifica la modificación de la arquitectura de mi proyecto para colocar todo en el mismo paquete. A menudo, Aspectos o algún tipo de inversión de control resultan ser el mejor enfoque para cualquier problema que considere brevemente el alcance del paquete.
Tengo curiosidad por decir que esto generalmente se considera cierto en todos los desarrolladores de Java, o es solo una casualidad del trabajo que hago. ¿Se utiliza mucho el alcance del paquete en el mundo real? ¿Hay muchos casos en los que se considera una buena forma de usar, o se ve principalmente como un comportamiento heredado que rara vez se explota en el desarrollo moderno?
No estoy preguntando nada acerca de por qué el ámbito privado del paquete es predeterminado, estoy preguntando cuándo se debe usar independientemente de los valores predeterminados. La mayoría de las discusiones sobre por qué es predeterminado no entran realmente en cuenta cuando el alcance del paquete es realmente útil, sino que simplemente argumentan por qué los otros dos ámbitos comúnmente utilizados no deberían ser predeterminados para que el paquete gane por proceso de eliminación. Además, mi pregunta es sobre el estado actual de desarrollo. Específicamente, nos hemos desarrollado hasta el punto en que otras herramientas y paradigmas hacen que el alcance del paquete sea menos útil que cuando la decisión de hacerlo predeterminado tenía sentido.