Comprendo l'idea dell'ambito del pacchetto e, a volte, ho persino pensato di volerlo. Tuttavia, ogni volta che ho deciso con l'intento serio di provare ad usarlo, ho scoperto che non si adattava alle esigenze che pensavo potesse servire.
Il mio problema principale sembra sempre che le cose che desidero limitare l'ambito di applicazione non siano mai nello stesso pacchetto. Concettualmente possono essere tutti collegati, ma la divisione logica dei dati all'interno dell'applicazione li ha come pacchetti figlio separati di un pacchetto più grande.
Ad esempio, potrei avere un modello Mission e voglio che solo altri strumenti Mission, come i miei servizi Mission, usino alcuni metodi. Tuttavia, finisco con Missions.models e Missions.services come i miei pacchetti, quindi MissionModel e MissionService non hanno lo stesso scopo del pacchetto. Non sembra mai che ci sia una situazione in cui i pacchetti contengono appropriatamente le cose che vorrei avere autorizzazioni elevate senza includere anche numerose cose che non desidero avere quelle autorizzazioni; e raramente sento il vantaggio del scoping del pacchetto che un metodo giustifica la modifica della mia architettura di progetto per posizionare tutto nello stesso pacchetto. Spesso Aspetti o una sorta di inversione del controllo si rivelano l'approccio migliore a qualsiasi problema per cui ho brevemente considerato l'ambito del pacchetto.
Sono curioso piuttosto che questo sia generalmente considerato vero per tutti gli sviluppatori Java, o è solo un colpo di fortuna del lavoro che faccio. L'ambito del pacchetto è molto utilizzato nel mondo reale? Ci sono molti casi in cui è considerata una buona forma da usare o è vista principalmente come un comportamento ereditario da sfruttare raramente nello sviluppo moderno?
Non sto chiedendo nulla sul perché l'ambito privato del pacchetto è predefinito, sto chiedendo quando dovrebbe essere usato indipendentemente dalle impostazioni predefinite. La maggior parte delle discussioni sul motivo per cui il valore predefinito non è realmente utile quando l'ambito del pacchetto è effettivamente utile, argomentando semplicemente perché gli altri due ambiti comunemente usati non dovrebbero essere predefiniti, quindi il pacchetto vince per processo di eliminazione. Inoltre, la mia domanda riguarda l' attuale stato di sviluppo. In particolare, abbiamo sviluppato al punto che altri strumenti e paradigmi rendono meno utile l'ambito del pacchetto, quindi era tornato quando la decisione di renderlo predefinito aveva un senso.