Sobes.tech
Senior

Kde je lepšie definovať rozhranie — na mieste implementácie alebo na mieste použitia?

sobes.tech AI

Odpoveď od AI

V Go je lepšie definovať rozhrania na mieste použitia, nie na mieste implementácie. To umožňuje vytvárať minimálne rozhrania, ktoré opisujú iba tie metódy, ktoré naozaj potrebuje spotrebiteľ.

Tento prístup zvyšuje flexibilitu a zjednodušuje testovanie, pretože implementácia nemusí poznať všetky rozhrania, iba tie, ktoré jej sú potrebné.

Príklad:

// Na mieste použitia
type Reader interface {
    Read(p []byte) (n int, err error)
}

func Process(r Reader) {
    // používa iba metódu Read
}

// Na mieste implementácie
type File struct {}
func (f *File) Read(p []byte) (int, error) {
    // implementácia
}

Takto je rozhranie definované na základe potrieb klienta, nie implementácie.