Sobes.tech
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.