Preciso de opinioes sobre definição de pacotes

Amigos peço uma opiniao, sugestão ou critica sobre a estrutura de pacotes que
estou definindo para um sistema web com 12 modulos.

Segue os pacotes:

br.com.empresa.base
TOBase, VLBase, DAOBase
br.com.empresa.dao
DAOXXX
br.com.empresa.to
TOXXX
br.com.emnpresa.vl
VLXXX
br.com.empresa.factory
DAOFactory, TOFactory, etc…
br.com.empresa.service
Locator, ServiceLocator
br.com.empresa.session
EJB’s
br.com.emrpesa.uitl
Helper Classes

Como tenho 12 modulos seria melhor eu criar um nivel acima de pacotes para cada modulo, exemplo:

br.com.empresa.modulo1.dao
br.com.empresa.modulo2.dao

O que voce acham… os que tem mais vivencia o que sugerem…

Obrigado a todos que derem sua opniao.

Questão complicada…

Eu pessoalmente odeio noems de pacotes longos e ilegíveis, e tenho que conviver com eles. A convenção da Sun é boa, mas acho que peca no tamanho que algo pode atingir, principalmente se você considerar que a maioria das emrpesas brasileiras (e de outros lugares do mundo) vai usar sufixos/prefixos como o ‘.br’ a mais.

A idéia de manter <domínio de empresa>.<modulo> é boa, apesar de gerar pacotes grandes ela é um modo simples e precvisível. Se você conseguir abreviar o nome dos módulos, melhor ainda, apesar de que vários prefixos pequenos e vários prefixos grandes dá no mesmo: são horríveis. Mantenha o mínimo possível.

Note, entretanto, que você não precisa repetir uma estrutura de pacotes em cada módulo. Módulos que usem hierarquia de classes semelhantes devem utilizar pacotes genéricos de sua aplicação, como <domínio da empresa>.persistencia, ou <dominio de empresa>.conectores. Você também pode colocar classes em pacotes iguais em módulos se seu ConectorComCafeteiraWallita só é usado em um módulo, você pode mantê-lo em <dominio de empresa>.conectores, mesmo que seu fonte esteja junto aos fontes do módulo X (é um conector e apesar de ser usado hoje só no módulo X, não rpecisa ser acoplado á ele).

Já que estamos falando em padrões e arquiteturas, o conceito de módulo é um pouco confuso, e guarda muita carga de arquiteturas cliente/servidor e/ou procedurais. Dê uma olhada na literatura de componentes :wink:

[]s

Olá

Não use prefixo br.com para todos os seus pacotes. Isto foi uma bobagem que um cara da Sun escreveu e um monte de gente segue copiando sem pensar. Apenas use nome_do_projeto como prefixo ou quando muito nome_da_empresa.nome_do_projeto como prefixo.

[]s
Luca