Funções e módulos
Tamanho e responsabilidade
- Uma função = uma tarefa clara. Se o nome precisa de “e” (
validaESalva), divida. - Early return para reduzir aninhamento de
if. - Parâmetros: preferir até 3; acima disso, agrupe em objeto/DTO.
Acoplamento
- Lógica de negócio fora de views/HTML; APIs finas que delegam a serviços.
- Não copiar blocos inteiros entre módulos — extrair helper ou serviço compartilhado (respeitando multi-tenant).
Estrutura de pastas
Respeite a árvore do projeto (backend/src/services, frontend/pages, etc.). Novo módulo segue o mesmo layout dos vizinhos.
Performance (sem micro-otimização)
- Consultas N+1: evitar loops com query dentro.
- Listagens: paginação e filtros no SQL quando o volume for alto.
- Cache só com critério de invalidação documentado.