DEPENDÊNCIA É SOBRE QUEM DEFINE UMA INTERFACE DIP RESPONSABILIDADE DE INSTANCIAR E GERENCIAR DEPENDÊNCIAS É DE UM CONTAINER OU MECANISMO EXTERNO IoC DEPENDENCY INVERSION: DEPENDER DE ABSTRAÇÕES SOLI[D]
preciso: Aqui está a interface. DI Eu (o chamador) vou te entregar o que você pediu. IoC “Quem chama quem?" O fluxo se inverte — é o framework ou o código de setup que chama a sua lógica DIP
Facilita a leitura e modulariza a responsabilidade de inicialização. TESTES não devem depender da existência do main.go CRESCER Parabéns! Você tem um main.go saudável
AGORA TEMOS HOOKS, MÚLTIPLAS IMPLEMENTAÇÕES, LIFECYCLES… PRECISAMOS DE AJUDA PARA MANTER A ORDEM — SEM ABRIR MÃO DA CLAREZA… FERRAMENTAS NÃO RESOLVEM PROBLEMAS DE DESIGN. MAS COM UM BOM DESIGN, ELAS PODEM TE AJUDAR A MANTÊ-LO…
padrão Precisa alterar dependências dinamicamente Performance e previsibilidade são prioridade Poucas dependências Você prefere erros na compilação a surpresas em tempo de execução
dinâmicos Quer rastrear cada dependência de forma clara Almeja controle fino do ciclo de vida Prefere evitar reflexão e runtime injection Quer produtividade rápida para MVP ou microsserviços Seu time exige rastreabilidade total
Média a alta Alta Muito alta (micro serviços, múltiplos domínios) 📦 Controle sobre dependências Total Total (gerado em build) Parcial (via container) Parcial com conveniência 🚀 Produtividade no bootstrap Baixa (boilerplate) Média Alta (pouco código) Muito alta (hooks, auto start, logs) 🧪 Testabilidade & Simulação Excelente Excelente Boa Média (por conta da abstração reflexiva) 🔍 Rastreabilidade & depuração Total transparência Total transparência Parcial (reflexão) Baixa (opaca por padrão) 🧰 Requer conhecimento prévio Nenhum além de Go idiomático Médio (estrutura declarativa + wire CLI) Médio (inversão via dig.Container) Alto (ciclo de vida, binding, logs automáticos)
COMO VOCÊ ESTRUTURA SEU SOFTWARE… NENHUMA FERRAMENTA CORRIGE UM PROBLEMA DE DESIGN. MAS, COM UM BOM DESIGN, A FERRAMENTA CERTA ECONOMIZA TEMPO — E DOR DE CABEÇA… VOCÊ NÃO COMEÇA COM INJEÇÃO DE DEPENDÊNCIA. VOCÊ CHEGA ATÉ ELA… USE TÉCNICAS DE INJEÇÃO DE DEPENDÊNCIA QUE ESCALEM COM SEU TIME E SUA BASE DE CÓDIGO — NÃO APENAS COM SUAS PREFERÊNCIAS…