Sobes.tech
Senior

¿Es mejor definir la interfaz en el lugar de la implementación o en el lugar de uso?

sobes.tech AI

Respuesta de la IA

En Go, es mejor definir las interfaces en el lugar donde se usan, no en el lugar donde se implementan. Esto permite crear interfaces mínimas que describen solo los métodos que realmente necesita el consumidor.

Este enfoque aumenta la flexibilidad y simplifica las pruebas, ya que la implementación no necesita conocer todas las interfaces, solo las que le son necesarias.

Ejemplo:

// En el lugar donde se usa
type Reader interface {
    Read(p []byte) (n int, err error)
}

func Process(r Reader) {
    // solo usa el método Read
}

// En el lugar de la implementación
type File struct {}
func (f *File) Read(p []byte) (int, error) {
    // implementación
}

De esta manera, la interfaz se define en función de las necesidades del cliente, no de la implementación.