Sobes.tech
Senior

Est-il préférable de définir l'interface au lieu d'implémentation ou au lieu d'utilisation?

sobes.tech IA

Réponse de l'IA

Il est préférable de définir les interfaces en Go au lieu de leur implémentation. Cela permet de créer des interfaces minimales qui décrivent uniquement les méthodes réellement nécessaires au consommateur.

Cette approche augmente la flexibilité et facilite les tests, car l'implémentation n'a pas besoin de connaître toutes les interfaces, seulement celles dont elle a besoin.

Exemple:

// Au lieu d'utilisation
type Reader interface {
    Read(p []byte) (n int, err error)
}

func Process(r Reader) {
    // utilise uniquement la méthode Read
}

// Au lieu d'implémentation
type File struct {}
func (f *File) Read(p []byte) (int, error) {
    // implémentation
}

Ainsi, l'interface est définie en fonction des besoins du client, et non de l'implémentation.