Sobes.tech
Senior

È meglio definire l'interfaccia nel luogo di implementazione o nel luogo di utilizzo?

sobes.tech AI

Risposta dell'AI

In Go, è meglio definire le interfacce nel luogo in cui vengono utilizzate, non nel luogo in cui vengono implementate. Questo permette di creare interfacce minime che descrivono solo i metodi realmente necessari al consumatore.

Questo approccio aumenta la flessibilità e semplifica i test, poiché l'implementazione non deve conoscere tutte le interfacce, solo quelle di cui ha bisogno.

Esempio:

// Nel luogo di utilizzo
type Reader interface {
    Read(p []byte) (n int, err error)
}

func Process(r Reader) {
    // usa solo il metodo Read
}

// Nel luogo di implementazione
type File struct {}
func (f *File) Read(p []byte) (int, error) {
    // implementazione
}

In questo modo, l'interfaccia viene definita in base alle esigenze del cliente, non dell'implementazione.