Код IT
← Каталог

Рекомендации по разработке на Go — Минимальные интерфейсы

Фрагмент из «Рекомендации по разработке на Go»: Минимальные интерфейсы.

Go main.go
// Хорошо: минимальные интерфейсы
type Reader interface {
    Read(p []byte) (n int, err error)
}

type Writer interface {
    Write(p []byte) (n int, err error)
}

// Плохо: монолитный интерфейс
type ReadWriter interface {
    Read(p []byte) (n int, err error)
    Write(p []byte) (n int, err error)
    Close() error
    Seek(offset int64, whence int) (int64, error)
    // ... еще 10 методов
}
// Хорошо: минимальные интерфейсы
type Reader interface {
    Read(p []byte) (n int, err error)
}

type Writer interface {
    Write(p []byte) (n int, err error)
}

// Плохо: монолитный интерфейс
type ReadWriter interface {
    Read(p []byte) (n int, err error)
    Write(p []byte) (n int, err error)
    Close() error
    Seek(offset int64, whence int) (int64, error)
    // ... еще 10 методов
}