Comprendo l'idea dello scope del pacchetto, e a volte ho persino pensato di volerlo. Tuttavia, ogni volta che ho deciso di provare a utilizzarlo ho scoperto che non corrispondeva ai bisogni che pensavo avrebbe servito.
Il mio problema principale sembra sempre essere che le cose che desidero limitare lo scopo non sono mai nello stesso pacchetto. Possono concettualmente essere tutti collegati, ma la divisione logica dei dati all'interno dell'applicazione li ha come pacchetti figlio separati di un pacchetto più grande.
Per esempio, potrei avere un modello di missione e voglio solo altri strumenti di missione, come i miei servizi di missione, per usare alcuni metodi. Comunque, finisco con Missions.models e Missions.services come i miei pacchetti, quindi MissionModel e MissionService non sono lo stesso scope 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 molte cose che non desidero avere quelle autorizzazioni; e raramente ritengo che il vantaggio dello scope del pacchetto sia un metodo che giustifica la modifica della mia architettura di progetto per posizionare tutto nello stesso pacchetto. Spesso gli Aspetti o qualche tipo di inversione di controllo risultano essere l'approccio migliore a qualsiasi problema per il quale ho considerato brevemente l'ambito del pacchetto.
Sono curioso, piuttosto, questo è 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 utilizzare, o è vista principalmente come un comportamento legacy da sfruttare raramente nello sviluppo moderno?
Non sto chiedendo nulla sul motivo per cui l'ambito privato del pacchetto è quello predefinito, sto chiedendo quando dovrebbe essere usato a prescindere dai valori predefiniti. La maggior parte delle discussioni sul motivo per cui è predefinita non entrano realmente in gioco quando l'ambito del pacchetto è effettivamente utile, invece di discutere 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 lo stato di sviluppo attuale . In particolare, abbiamo sviluppato fino al punto in cui altri strumenti e paradigmi rendono meno utile lo scope del pacchetto, ma è tornato quando la decisione di renderlo predefinito aveva senso.