строить чистую архитектуру. Я вот смотрю на нее и вижу какую то хуерагу, но 6к звезд не могут ошибаться и я начал подозревать что я че то не понимаю. Там есть пакет usecase, здесь https://github.com/bxcodec/go-clean-arch/blob/master/article/usecase/article_ucase.go#L13 обозначаются зависимости от интерфейсов, которые лежат вообще в другом пакете, в домене https://github.com/bxcodec/go-clean-arch/blob/master/domain/article.go#L19 внезапно описываются интерфейсы для юзкейсов. Пжлста подскажите как такое возможно?
нормально вроде, а как должно было быть?
Дорогой Danila! Такое возможно по одной простой причине: автор этого репозитория - мудак. И все, кто ему поставил 6k звезд тоже - мудаки (или боты). Потому что только мудак делает 2 совершенно одинаковых интерфейса с разными именами (https://github.com/bxcodec/go-clean-arch/blob/master/domain/article.go) и называет это "чистой архитектурой". Надеюсь, я ответил на твой вопрос. Всего хорошего!
Утверждение, явно обладающее дискуссионным потенциалом.
сильное заявление в наши дни так стали называть? взял на заметку.
Это просто пример оооочень вырожденный. Поэтому ничего и не понятно. Но вообще юзкейс - может быть абстракцией уровня домена. Доменная модель может разные юзкейсы использовать и комбинировать. При этом юзкейсы в целом могут быть реализованы по разному. Юзкейс в сложном приложении может лежать в отдельном слое и в отдельном пакете. Это не запрещено. И этот пример вводит вас в заблуждение во первых из-за своей вырожденности, а во вторых, потому что скорее всего вы слишком буквально и в неправильном контексте понимаете Go-шную рекомендацию "Интерфейсы должны лежать в месте их использования".
Гошная рекомендация здесь ни при чем, это просто необходимое условие для правильного направления зависимостей в контексте чистой архитектуры.
О каком именно условии речь?
Интерфейсы лежат в пакете использующем их
Если доменная модель (набор структур и функций) лежит в пакете domain и эти функции доменной модели используют некоторые юзкейсы. Где в таком случае должны лежать юзкейсы?
Во первых модели не используют юзкейсы, во вторых если уж вы это делаете то юзкейсы лежат в юзкейсах, а в домене интерфейсы
Юзкейс относится к какому слою?
Подскажите пожалуйста - какое конкретно утверждение вы имеете в виду (их там три)?
Обсуждают сегодня