в основном делают разделение на handler’ы, repository, service и в каждой из папок пишется логика для всех сущностей (работа с (например) юзером размазана по этим папкам), а потом последовательно прокидывают зависимости (db -> repo -> service -> handler) и собирают все в одном файле (app.go, условно)
Я хочу вынести так называемые фичи в отдельные папки - например user и чтобы там уже была вся работа с ним (и хэндлеры, и репозитории, и сервисы)
Собственно, вопрос:
Могу ли я вынести всю логику работы с юзером в отдельную папку и также просто подключать в общий репозиторий, сервис и хэндлеры? Или это уже немного не совсем верный путь и надо сделать как-то по-другому? (Для меня важно достичь разделения фичей по своим директориям, а не раскидыванием работы с ними по всем папкам)
Заранее благодарю за ответы и прошу прощения за столь длинное сообщение!
Так вроде чистая архитектура и направлена на то , что ты делишь проект на бизнес сущности. И в каждой папке бизнес сущности и будут слои чистой архитектуры (User содержит Delivery, Usecase, repository)
Layered архитектура обычно плохо пахнет, ddd как раз про другое
Это прям перпендикулярно чистой архитектуре.
Вы про первую часть сообщения?
По мимо этого что вы смешивайте в одну кучу, так ещё и на разных уровнях условный user может быть разным.
Принял А в каком плане - разный?
Почти Подключение к бд - само по себе и потом его прокидывать по все репозитории А так - да, логику работы с юзером вынести в отдельную директорию (но как понял, это не совсем хорошо, о чем я в итоге думал сделать)
В зависимости от бизнес контекста у него будет разный набор полей
Хм, принял, благодарю Могу вас еще попросить скинуть +- нормального чтива о ddd (внутри экосистемы го и вне)?
Да, вот только об этом подумал, что прокидывание чужого репозитория будет совсем плохой кашей.. Благодарю!
Обсуждают сегодня