Je comprends l'idée de la portée du package et j'ai même parfois pensé que je le voulais. Cependant, chaque fois que je m'installais avec une intention sérieuse d'essayer de l'utiliser, je découvrais qu'il ne répondait pas aux besoins que je pensais qu'il servirait.
Mon principal problème semble toujours être que les choses dont je souhaite limiter la portée ne sont jamais dans le même paquet. Conceptuellement, ils peuvent tous être liés, mais la division logique des données au sein de l'application les a comme packages enfants séparés d'un package plus grand.
Par exemple, je peux avoir un modèle de mission et je veux que seuls d'autres outils de mission, comme mes missionServices, utilisent certaines méthodes. Cependant, je me retrouve avec Missions.models et Missions.services comme mes packages, donc MissionModel et MissionService ne sont pas la même étendue de package. Il ne semble jamais qu'il y ait une situation où les packages contiennent de manière appropriée les choses que je voudrais avoir des autorisations élevées sans également inclure de nombreuses choses que je ne souhaite pas avoir ces autorisations; et je ressens rarement l’avantage de l’étendue d’un package qui justifie de modifier l’architecture de mon projet pour tout placer dans le même package. Souvent, soit des aspects ou une sorte d'inversion de contrôle s'avèrent être la meilleure approche pour tout problème pour lequel j'ai brièvement envisagé la portée du package.
Je suis curieux plutôt que cela soit généralement considéré comme vrai pour tous les développeurs Java, ou n'est qu'un coup d'œil du travail que je fais. La portée du package est-elle beaucoup utilisée dans le monde réel? Y a-t-il de nombreux cas où il est considéré comme une bonne forme à utiliser, ou est-il considéré principalement comme un comportement hérité qui est rarement exploité dans le développement moderne?
Je ne demande rien sur la raison pour laquelle la portée privée du package est par défaut, je demande quand elle doit être utilisée indépendamment des valeurs par défaut. La plupart des discussions sur la raison pour laquelle il s'agit de la valeur par défaut n'interviennent pas vraiment lorsque la portée du package est réellement utile, plaidant simplement pour la raison pour laquelle les deux autres étendues couramment utilisées ne devraient pas être par défaut afin que le package gagne par processus d'élimination. De plus, ma question porte sur l' état actuel du développement. Plus précisément, avons-nous développé au point où d'autres outils et paradigmes rendent la portée du package moins utile qu'elle ne l'était lorsque la décision de la rendre par défaut était logique.