Junior — Middle
Quais são as vantagens e desvantagens de referenciar a lógica de negócio a interfaces no sistema?
sobes.tech IA
Resposta da IA
A referência a interfaces na lógica de negócio em Go oferece as seguintes vantagens:
- Flexibilidade e escalabilidade: a lógica de negócio depende de abstrações, não de implementações concretas, o que facilita a substituição de componentes.
- Testabilidade: é fácil substituir as implementações de interfaces por mocks para testes unitários.
- Baixo acoplamento: reduz a dependência entre módulos, melhorando a manutenção e a escalabilidade.
Desvantagens:
- Complexidade de compreensão: pode ser mais difícil para iniciantes acompanhar a lógica devido às abstrações.
- Redundância de código: às vezes é necessário escrever muitas interfaces e adaptadores, aumentando o volume de código.
- Sobrecarga: se as interfaces forem usadas sem necessidade, isso pode levar a uma complexidade arquitetônica excessiva.
Exemplo:
// Interface para o repositório de utilizadores
type UserRepository interface {
GetUser(id int) (*User, error)
}
// A lógica de negócio depende da interface, não de uma implementação concreta
func GetUserName(repo UserRepository, id int) (string, error) {
user, err := repo.GetUser(id)
if err != nil {
return "", err
}
return user.Name, nil
}
Desta forma, é fácil substituir o UserRepository para testes ou alterar a implementação sem modificar a lógica de negócio.