私はパッケージスコープの考え方を理解しています。しかし、真剣に使用しようとするたびに、それが役立つと思っていたニーズに合わないことに気づきました。
私の主な問題は常に、私がスコープを制限したいものは決して同じパッケージに入っていないということです。それらは概念的にはすべてリンクされている可能性がありますが、アプリケーション内のデータの論理的な分割では、それらをより大きなパッケージの個別の子パッケージとして扱います。
たとえば、Missionモデルを使用していて、mymissionServicesなどの他のMissionツールのみにいくつかのメソッドを使用させたい場合があります。ただし、最終的にはパッケージとしてMissions.modelsとMissions.servicesが使用されるため、MissionModelとMissionServiceは同じパッケージスコープではありません。昇格されたアクセス許可が必要なものが、パッケージに適切に含まれているにもかかわらず、それらのアクセス許可が不要な多くのものが含まれていないような状況は決してありません。また、メソッドをスコープするパッケージの利点が、すべてを同じパッケージに配置するようにプロジェクトアーキテクチャを変更することを正当化することはほとんどありません。多くの場合、アスペクトまたは何らかの制御の逆転のどちらかが、パッケージのスコープを簡単に検討した問題に対するより優れたアプローチであることが判明します。
私は好奇心が強いのですが、これは一般的にすべてのJava開発者に当てはまると考えられているか、私が行っている作業のほんの一部にすぎません。パッケージスコープは現実世界で多く利用されていますか?それが使用するのに適した形態と考えられる多くのケースがありますか、それとも現代の開発でめったに利用されないレガシーな振る舞いと見なされていますか?
パッケージのプライベートスコープがデフォルトである理由については何も尋ねていません。デフォルトに関係なくいつ使用する必要があるかを尋ねています。なぜそれがデフォルトであるかについてのほとんどの議論は、パッケージスコープが実際に役立つ場合には実際には入りません。代わりに、一般的に使用される他の2つのスコープがデフォルトではないはずであるという理由だけを主張して、除去プロセスによってパッケージが勝つようにします。また、現在の開発状況についてお伺いします。具体的には、他のツールやパラダイムによってパッケージのスコープの有用性が低下するところまで開発したので、それをデフォルトにするという決定が理にかなっていたときのことです。