O layout da árvore de origem deve refletir a arquitetura; Como um corolário, uma arquitetura bem estruturada pode levar a um layout de árvore de origem bem estruturado. Sugiro ler o padrão POSA1 Layers , tentando encaixar sua arquitetura em uma estrutura em camadas e, em seguida, nomear cada uma das camadas resultantes e usando isso como base para sua hierarquia de origem. Tomando uma arquitetura de três camadas comum como uma linha de base:
- apresentação / webService (apresenta uma interface de serviço da web para nossa lógica de negócios)
- logic / * (módulos de lógica de negócios entram aqui)
- storage / sql (APIs de armazenamento de backend aqui - isso usa uma interface SQL para armazenar em um banco de dados)
- util / * (código utilitário - utilizável por todas as outras camadas, mas que não se refere fora do util, vai aqui)
Observe que as camadas não contêm código diretamente, mas são estritamente usadas para organizar módulos.
Dentro de um módulo, uso o seguinte tipo de layout:
-
<module>
(caminho para o módulo diretamente; define a interface modular) -
<module>/impl/<implName>
(uma implementação específica da interface modular) -
<module>/doc
(Documentação para usar o módulo) -
<module>/tb
(código de teste de unidade para o módulo)
onde o <module>
está localizado no repositório de acordo com a camada à qual ele pertence.