Padrão de Organização de Pacotes: Package by Feature
Este documento serve como base de conhecimento sobre a estrutura de pacotes da aplicação. A organização é feita por funcionalidade (Feature) para manter classes altamente coesas e desacopladas agrupadas no mesmo pacote.
Estrutura de Pacotes
Todos os novos arquivos de código-fonte Kotlin devem ser organizados em subpacotes específicos sob br.dev.moisesfilho.companionbot:
core- Contém utilitários transversais e abstrações globais (ex: provedores de tempo, injeção).
- Pacote:
br.dev.moisesfilho.companionbot.core
sensors- Contém tudo relacionado a sensores físicos e detecção de gestos de hardware.
- Pacote:
br.dev.moisesfilho.companionbot.sensors
sleep- Contém as regras de negócio de horário de sono e daydream.
- Pacote:
br.dev.moisesfilho.companionbot.sleep
settings- Contém telas de preferências do usuário e controle de armazenamento (SharedPreferences/fakes).
- Pacote:
br.dev.moisesfilho.companionbot.settings
service- Contém serviços Android em background e Daydreams.
- Pacote:
br.dev.moisesfilho.companionbot.service
navigation- Contém rotas e chaves de navegação.
- Pacote:
br.dev.moisesfilho.companionbot.navigation
uieviewmodel- Contém os elementos visuais globais (composables compartilhados e viewModel principal).
Regras de Implementação
- Evite arquivos soltos no pacote raiz: Apenas a classe principal
MainActivitye o pacote base devem residir na raiz. - Novas Features: Para qualquer nova funcionalidade de negócio, crie um novo subpacote apropriado.
- Encapsulamento: Use visibilidade
internaloupackage-private(onde aplicável) para classes de utilidade interna da funcionalidade para evitar vazamentos de escopo.