go-park-mail-ru / 2024_2_NovaCode

Backend репозиторий команды NovaCode. Проект Spotify
2 stars 0 forks source link

Принимать интерфейсы, возвращать структуры #10

Closed Max425 closed 1 month ago

Max425 commented 1 month ago

у вас сейчас вот так, вот пример:

func NewTrackUsecase(trackRepo track.Repo, albumRepo album.Repo, artistRepo artist.Repo, logger logger.Logger) track.Usecase {
    return &trackUsecase{trackRepo, albumRepo, artistRepo, logger}
}

но возвращать стоит именно структуру, а не интерфейс (есть много статей об этом, вот например: https://tutorialedge.net/golang/accept-interfaces-return-structs/)

поэтому лучше сделать так:

func NewTrackUsecase(trackRepo track.Repo, albumRepo album.Repo, artistRepo artist.Repo, logger logger.Logger) *trackUsecase {
    return &trackUsecase{trackRepo, albumRepo, artistRepo, logger}
}