Rozumiem ideę zakresu pakietu, a czasami nawet myślałem, że tego chcę. Jednak za każdym razem, gdy zdecydowałem się na poważny zamiar wypróbowania go, odkryłem, że nie odpowiada on potrzebom, które, jak sądzę, będą służyć.
Moim głównym problemem zawsze wydaje się to, że rzeczy, które chciałbym ograniczyć zakres, nigdy nie są w tym samym pakiecie. Można je wszystkie koncepcyjnie połączyć, ale logiczny podział danych w aplikacji ma je jako osobne pakiety podrzędne większego pakietu.
Na przykład mogę mieć model Misji i chcę, aby tylko inne narzędzia Misji, takie jak moje usługi misji, korzystały z niektórych metod. Jednak kończę na Missions.models i Missions.services jako moich pakietach, więc MissionModel i MissionService nie są tym samym zakresem pakietu. Nigdy nie wydaje się, że istnieje sytuacja, w której pakiety odpowiednio zawierają rzeczy, które chciałbym mieć podwyższone uprawnienia bez uwzględnienia wielu rzeczy, których nie chcę mieć; i rzadko kiedy czuję, że przewaga zakresu pakietu w metodzie uzasadnia modyfikację architektury mojego projektu, aby umieścić wszystko w tym samym pakiecie. Często albo Aspekty, albo coś w rodzaju odwrócenia kontroli okazuje się lepszym podejściem do każdego problemu, dla którego krótko rozważałem określenie zakresu.
Jestem ciekawy, że jest to ogólnie uważane za prawdziwe we wszystkich programistach Java, lub jest po prostu fartem mojej pracy. Czy zakres pakietów jest często wykorzystywany w świecie rzeczywistym? Czy istnieje wiele przypadków, w których uważa się, że jest to dobra forma do użycia, czy też jest postrzegana głównie jako starsze zachowanie, które rzadko jest wykorzystywane w nowoczesnym rozwoju?
Nie pytam o to, dlaczego zakres prywatny pakietu jest domyślny, pytam, kiedy należy go używać niezależnie od wartości domyślnych. Większość dyskusji na temat tego, dlaczego jest ona domyślna, tak naprawdę nie wchodzi w grę, gdy zakres pakietu jest rzeczywiście przydatny, zamiast tego argumentując po prostu, dlaczego dwa pozostałe powszechnie używane zakresy nie powinny być domyślne, więc pakiet wygrywa przez proces eliminacji. Ponadto moje pytanie dotyczy obecnego stanu rozwoju. W szczególności opracowaliśmy do tego stopnia, że inne narzędzia i paradygmaty sprawiają, że zakres pakietu jest mniej przydatny niż wtedy, gdy decyzja o nadaniu mu domyślności ma sens.