Size: a a a

2020 July 20

Н

Никита in Go-go!
сонная википедия
можно взять какой-нибудь DI, вроде wire, но мне кажется это оверкилл в большинстве случаев
хочется без DI либ. Как сейчас сделано – адекватен? Или я упускаю что-то
источник

DF

Dan Fox in Go-go!
Dimka ☣️ 🦀
я думал у меня у одного такой код получается :)
На java раньше так же делали, пока аннотации не появились,
источник

МП

Мимо Проходящий... in Go-go!
сонная википедия
можно взять какой-нибудь DI, вроде wire, но мне кажется это оверкилл в большинстве случаев
Адекватных di контейнеров в го нет и видимо не будет никогда
источник

с

сонная википедия... in Go-go!
Никита
хочется без DI либ. Как сейчас сделано – адекватен? Или я упускаю что-то
нормально

DI это тоже самое, но при помощи магии рефлекта или кодогенерации
источник

DF

Dan Fox in Go-go!
Никита
Нормальная практика (судя по тому, куда не глянь) такое делать в main? Либо есть вариант это делать красивее

usersGateway := usersGateway.New(db)
postsGateway := postsGateway.New(db)
likesGateway := likesGateway.New(db)
locationsGateway := locationsGateway.New(db, cache)

usersService := usersService.New(usersGateway, postsGateway)
postsService := postsService.New(usersGateway, postsGateway)
likesService := likesService.New(usersGateway, postsGateway, likesGateway)
locationsService := locationsService.New(usersGateway, locationsGateway)

usersController := usersController.New(usersService)
postsController := postsController.New(postsService)
likesController := likesController.New(likesService)
locationsController := locationsController.New(locationsService)

err = delivery.Serve(cfg.Server, usersController, postsController, likesController, locationsController)
Разбей по методам, чтобы каши не было в мейне
источник

DF

Dan Fox in Go-go!
Плюс можно в структуры разложить
источник

DP

Daniel Podolsky in Go-go!
Мимо Проходящий
Адекватных di контейнеров в го нет и видимо не будет никогда
Будут генерики - будет и это
источник

Н

Никита in Go-go!
Dan Fox
Разбей по методам, чтобы каши не было в мейне
Как вариант. Просто вижу, что если иметь 10+ сервисов, какое полотно получится с таким подходом, и подумал, что тут что-то не так
источник

ЕО

Евгений Омельченко... in Go-go!
Никита
Нормальная практика (судя по тому, куда не глянь) такое делать в main? Либо есть вариант это делать красивее

usersGateway := usersGateway.New(db)
postsGateway := postsGateway.New(db)
likesGateway := likesGateway.New(db)
locationsGateway := locationsGateway.New(db, cache)

usersService := usersService.New(usersGateway, postsGateway)
postsService := postsService.New(usersGateway, postsGateway)
likesService := likesService.New(usersGateway, postsGateway, likesGateway)
locationsService := locationsService.New(usersGateway, locationsGateway)

usersController := usersController.New(usersService)
postsController := postsController.New(postsService)
likesController := likesController.New(likesService)
locationsController := locationsController.New(locationsService)

err = delivery.Serve(cfg.Server, usersController, postsController, likesController, locationsController)
Пока вы не запутались в этом — нормально. А потом DI
источник

МП

Мимо Проходящий... in Go-go!
Daniel Podolsky
Будут генерики - будет и это
Там рефлексии достаточно вроде как
источник

с

сонная википедия... in Go-go!
wire работает на кодогенерации
источник

ЕО

Евгений Омельченко... in Go-go!
wire тупой как пробка и очень норм
источник

МП

Мимо Проходящий... in Go-go!
Вот думаю свой написать по образу и подобию цешарповских
источник

с

сонная википедия... in Go-go!
Мимо Проходящий
Вот думаю свой написать по образу и подобию цешарповских
на рефлекте?
источник

МП

Мимо Проходящий... in Go-go!
Евгений Омельченко
wire тупой как пробка и очень норм
Слишком тупой и толку от него мало
источник

DP

Daniel Podolsky in Go-go!
Мимо Проходящий
Там рефлексии достаточно вроде как
Рефлексия - это ошибки времени исполнения. Мы не любим так
источник

МП

Мимо Проходящий... in Go-go!
сонная википедия
на рефлекте?
А на чом исчо?
источник

МП

Мимо Проходящий... in Go-go!
Daniel Podolsky
Рефлексия - это ошибки времени исполнения. Мы не любим так
Ну там осмысленные ошибки "тип не имплементирован" и все прям в мэйне и выскочат
источник

MD

Maxim Dororonin in Go-go!
https://github.com/goava/di подписываемся ставим лайки
источник

ЛА

Локоть Анатолий... in Go-go!
Maxim Dororonin
https://github.com/goava/di подписываемся ставим лайки
А сиськи или дом с приведениями будут?
источник