Senior
Onde é melhor definir a interface — no local de implementação ou no local de uso?
sobes.tech IA
Resposta da IA
No Go, é melhor definir interfaces no local de uso, e não no local de implementação. Isso permite criar interfaces mínimas que descrevem apenas os métodos realmente necessários ao consumidor.
Essa abordagem aumenta a flexibilidade e simplifica os testes, pois a implementação não precisa conhecer todas as interfaces, apenas aquelas de que necessita.
Exemplo:
// No local de uso
type Reader interface {
Read(p []byte) (n int, err error)
}
func Process(r Reader) {
// usa apenas o método Read
}
// No local de implementação
type File struct {}
func (f *File) Read(p []byte) (int, error) {
// implementação
}
Dessa forma, a interface é definida com base nas necessidades do cliente, e não na implementação.