Quiz 14 - Arquitetura e Boas Práticas 🏗️
1. Qual o maior objetivo da "Clean Architecture"?
Fazer com que o código rode em computadores antigos
Isolar a lógica de negócio de detalhes externos como banco de dados, UI e frameworks
Exigir que o programador tome banho antes de codar
Diminuir o espaço em disco do projeto
2. Em Go, o que define a camada de "Entidade"?
A conexão com o banco de dados
As structs que representam o domínio do negócio e suas regras fundamentais
Os scripts de deploy
A interface visual do site
3. O que é "Injeção de Dependência" (DI)?
Colocar vírus no código de terceiros
Passar as dependências de um objeto (como um repositório) via construtor ou interface, em vez de criá-las internamente
Uma vacina para erros de sintaxe
Formatar o computador via terminal
4. Por que a pasta `internal/` é especial em Go?
Porque ela é escondida por padrão
Porque o compilador impede que pacotes fora do projeto importem o código que está dentro dela
Porque ela acelera o processamento de imagens
Porque só o administrador pode editá-la
5. Qual a recomendação para nomenclatura de pacotes em Go?
Usar nomes complexos e técnicos (ex: `BusinessLogicImplementation`)
Usar substantivos curtos, simples e em minúsculo (ex: `user`, `auth`, `order`)
Usar apenas números
Usar o nome do desenvolvedor
6. O que significa a frase "Retorne structs, aceite interfaces"?
É uma tradução errada de um livro
Que suas funções devem aceitar abstrações (interfaces) para serem flexíveis, mas retornar dados concretos para serem rápidas
Que o programa deve ter apenas 10 arquivos
Que não devemos usar variáveis
7. Na Clean Architecture, quem pode conhecer quem?
Todos podem conhecer todos
As camadas externas podem conhecer as internas, mas as internas nunca conhecem as externas
Somente o banco de dados conhece o resto
As camadas são secretas
8. Qual o papel do arquivo `main.go` em um projeto bem arquitetado?
Conter toda a lógica do sistema
Atuar como o "fio de ligação", instanciando as dependências e iniciando o servidor
Ser o manual de instruções
O projeto não precisa de um main.go
9. Go prefere Composição ou Herança?
Herança pesada com várias camadas
Composição (Embedding)
Go não permite nenhum dos dois
Depende do sistema operacional
10. Onde deve ficar a lógica de "Como salvar no banco de dados"?
Na camada de Service
No arquivo main
Na camada de Repository
Directamente no Handler