Pular para conteúdo

Aula 14 - Arquitetura e Boas Práticas 🏗️

Criando Sistemas Escaláveis e Fáceis de Manter


Agenda de Hoje 📅

  1. O Caos vs Organização
  2. Clean Architecture em Go
  3. Injeção de Dependência
  4. Estrutura de Pastas (Padrão)
  5. Visibilidade e o pacote internal
  6. Mini-Projeto: Refatorando para DI

1. Clean Architecture 🧊

  • Mantra: Independência de Framework e Banco.
  • O código de negócio deve ser puro Go.
graph TD
    UI[Handlers] --> UC[UseCases]
    UC --> EN[Entities]
    UC --> DB[Repositories]

2. Injeção de Dependência (DI) 💉

  • Não deixe a struct criar seu próprio Repository.
  • o repositório para ela (via construtor).
func NewService(r Repository) *Service {
    return &Service{repo: r}
}

3. O Pacote internal ⚔️

  • Protege o seu código de "vazar".
  • Apenas pacotes dentro do módulo podem importá-lo.
  • Ideal para: Lógica de banco e regras internas.

4. Estrutura de Pastas Profissional 📂

$ tree
.
├── cmd/        # Entrypoints
├── internal/   # Core (Business)
├── pkg/        # Shared Libs
└── api/        # Docs/OpenAPI

5. Boas Práticas (Cringe Free) ✨

  • Pacotes com nomes curtos: user, auth.
  • Sem utils ou helpers genéricos.
  • Retornos concretos, entradas abstratas.

6. Mini-Projeto: Refatorando 🚀

  • Isolar a struct Livro em entitites.
  • Criar interface LivroRepository.
  • Fazer o Handler receber a interface.

Resumo da Aula ✅

  • Clean Arch foca no que Realmente Importa (Negócio).
  • Injeção de Dependência facilita Testes Unitários.
  • Estrutura de pastas reflete a maturidade do time.

Próxima Aula: Docker e Deploy 🐳

  • Indo para o mundo real.
  • Containers e Infra.

Dúvidas? 🤔

"A arquitetura é o que permite que você mude de ideia depois."