Eu entendo a idéia do escopo do pacote e às vezes até pensei que eu queria. No entanto, toda vez que me empenhava em tentar usá-lo, descobri que não atendia às necessidades que eu pensava que serviriam.
Minha principal questão sempre parece ser que as coisas que desejo limitar o escopo nunca estão no mesmo pacote. Conceitualmente, todos podem estar vinculados, mas a divisão lógica dos dados no aplicativo os possui como pacotes filhos separados de um pacote maior.
Por exemplo, posso ter um modelo de missão e quero que apenas outras ferramentas da missão, como meus serviços de missão, usem alguns métodos. No entanto, acabo com Missions.models e Missions.services como meus pacotes, portanto, MissionModel e MissionService não têm o mesmo escopo de pacote. Nunca parece que existe uma situação em que os pacotes contêm adequadamente o que eu gostaria de ter permissões elevadas, sem incluir também várias coisas que eu não gostaria de ter; e raramente sinto que a vantagem do escopo de pacote de um método justifique a modificação da arquitetura do meu projeto para colocar tudo no mesmo pacote. Freqüentemente, Aspectos ou algum tipo de inversão de controle são a melhor abordagem para qualquer problema que eu considerei brevemente o escopo do pacote.
Estou curioso, pelo contrário, isso geralmente é considerado verdadeiro em todos os desenvolvedores de Java ou é apenas um acaso do trabalho que faço. O escopo do pacote é muito utilizado no mundo real? Existem muitos casos em que é considerado uma boa forma de usar ou é visto principalmente como um comportamento herdado que raramente é explorado no desenvolvimento moderno?
Não estou perguntando nada sobre por que o escopo privado do pacote é padrão; estou perguntando quando ele deve ser usado, independentemente dos padrões. A maioria das discussões sobre por que é padrão não entra realmente quando o escopo do pacote é realmente útil. Em vez disso, argumenta simplesmente por que os outros dois escopos comumente usados não devem ser o padrão, de modo que o pacote vence pelo processo de eliminação. Além disso, minha pergunta é sobre o estado atual de desenvolvimento. Especificamente, desenvolvemos ao ponto em que outras ferramentas e paradigmas tornam o escopo do pacote menos útil do que quando a decisão de torná-lo padrão fazia sentido.