ОЧЕНЬ ЧИСТАЯ АРХИТЕКТУРА НА GOLANG

แชร์
ฝัง
  • เผยแพร่เมื่อ 1 พ.ย. 2024

ความคิดเห็น • 59

  • @marcelosoian
    @marcelosoian 5 หลายเดือนก่อน +1

    Нельзя не поставить лайк. Много чего уточнил для себя. Спасибо что поделились.

  • @MarkAnto7
    @MarkAnto7 ปีที่แล้ว +3

    Реально очень чистая архитектура, файл мэин.го из репозитория пустой
    А без шуток лучшие уроки по Го - спасибо Артур.

  • @ВикторДолгушин-м4ц
    @ВикторДолгушин-м4ц 2 ปีที่แล้ว +6

    Спасибо, что продолжаете делиться своими успехами.

  • @brothers_karamazovs
    @brothers_karamazovs 2 ปีที่แล้ว +8

    Спасибо за стрим!
    Было бы здорово осветить подробнее тему реализации транзакций в юзкейсах и сервисах на практике.

  • @andreyspoki4672
    @andreyspoki4672 ปีที่แล้ว +2

    Пересмотрел предыдущие видео о чистой архитектуре и это видео. Этот вариант намного круче, проще, понятнее и гибче. Сделано более качественно, однозначно лайк👍
    Будем реализовывать на практике😊

  • @DzintarsDev
    @DzintarsDev ปีที่แล้ว +1

    Teperj nado video - " Samaja chistaja Go arhitektura"! :D

  • @MaximRovinsky
    @MaximRovinsky 2 ปีที่แล้ว +3

    С переделанной архитектурой, теперь должно быть проще тестировать и в целом выглядит прозрачно понятно. Круто организовано - это 𝕃𝕚𝕜𝕖👍

  • @tzofeolam
    @tzofeolam 2 ปีที่แล้ว +11

    Выходит, что в Go нет устоявшейся конвенции по логическому разделеню кода на директории/пакеты, как например в Java? Иногда забавно наблюдать за всеми этими метаниями в ролике, в процессе написания кода: "сделаем это здесь... нет, лучше сделаем этот тут или лучше там".

  • @temak8805
    @temak8805 2 ปีที่แล้ว +4

    Спасибо, супер. Хотелось бы увидеть примеры с транзакциями на разных уровнях.

  • @Vladislav2951
    @Vladislav2951 หลายเดือนก่อน +1

    Как это всё работает, автор конечно же не показал... Ну да, ведь, это совершенно неважно! Чемодан без ручки.

  • @АлексейСмирнов-н7р
    @АлексейСмирнов-н7р 2 ปีที่แล้ว +1

    Отличный видос, то что я искал. Только начал изучать чистую архитектуру и меня очень напрягало куча одинаковых интерфейсов в разных папках. Значит я все правильно понял

  • @alekseybudaev2135
    @alekseybudaev2135 2 ปีที่แล้ว +4

    Как всегда круто. Давай что нибудь на веб сокетах.

  • @zak_47
    @zak_47 2 ปีที่แล้ว +3

    как всегда топ!

  • @TheArtofDevelopment
    @TheArtofDevelopment  2 ปีที่แล้ว +5

    Смотреть x1.5-x2 :D
    и заходим в Телеграмм Канал: t.me/theartofdev
    И в Телеграмм Группу: t.me/theartofdevel

  • @theeasywaytr4293
    @theeasywaytr4293 2 ปีที่แล้ว +4

    Ура!!!

  • @vp_arth
    @vp_arth 7 หลายเดือนก่อน

    А где-то уже есть отдельное видео о том, чем так плохи указатели?
    Если бы в go были константные указатели, ты бы от них не отказался?

  • @vp_arth
    @vp_arth 7 หลายเดือนก่อน

    У тебя не юзкейсы, а коллекции юзкейсов. Юзкейсы - это «предоставить список доступных книг отфильтрованных по X», «выдать книгу пользователю», «получить новую книгу на баланс» и т.п.

  • @asmr_codster
    @asmr_codster ปีที่แล้ว +1

    Спасибо за видео. А что делать, если этот сервис нужно поднять на сервере в докере? yaml/env/json файлы же не хранят в репозитории? Как тогда задеплоить в gitalb, например ?

  • @ibragimov-s3y
    @ibragimov-s3y 11 หลายเดือนก่อน +1

    почему не создать бы один общий интерфейс и привязывать сторажи к нему? зачем дублирование кода?

    • @vp_arth
      @vp_arth 7 หลายเดือนก่อน

      Интерфейсы в go вообще не нужны в общем случае. Они объявляются ровно там, где требуется соответствие контракту.
      Один и тот же сторадж в разных сценариях может удовлетворять разным интерфейсам - один сценарий только создаёт сущности, другой только ищет и т.п.
      Полный интерфейс всего стораджа не нужен никому.

  • @ИванКозлов-ь8ъ
    @ИванКозлов-ь8ъ ปีที่แล้ว +1

    Эх. Сколько придётся принять антидепрессантов, чтобы из python войти в чистую архитектуру на Golang. Когда на видео эксперт 20 минут тратит на реализацию простейшего казалось бы кейса exlude/include fields. Который по идее должен идти в месте с параметрами функции GetList(limit, offset, include, exclude). Но в Golang нет параметров default у функций вот и появляются всякие встраивания структуры в структуру, которые работают под кейс всё равно, а не ABC. Страшно.

  • @gooseman5578
    @gooseman5578 11 หลายเดือนก่อน +1

    нет "тама" исходного кода, он старый

  • @bossikom
    @bossikom 2 ปีที่แล้ว +8

    А зачем в entity нужны json-атрибуты. по сути domain вообще не должен знать что такое json? Он должен конвертиться во что угодно соответствующим адаптером (json, sql, xml, proto...)

    • @artfrela
      @artfrela ปีที่แล้ว

      Думаю сила привычки ;-)

  • @theeasywaytr4293
    @theeasywaytr4293 2 ปีที่แล้ว +1

    Наконец-то посмотрел, спасибо, красота какая!
    Вопрос: а как же интерфейс Сервиса? Разве NewService не должен возвращать именно интерфейс, а не конкретную реализацию сервиса?

    • @TheArtofDevelopment
      @TheArtofDevelopment  2 ปีที่แล้ว

      нет. принимаем интерфейс а возвращаем интерфейс

    • @artfrela
      @artfrela ปีที่แล้ว +1

      @@TheArtofDevelopment очепятка, Accept interfaces, return structs

  • @cegheyYT
    @cegheyYT 2 ปีที่แล้ว +1

    Про возврат из конструктора неэкспортируемого типа, мне сделали замечание в дипломной работе ((, теперь ищу источник истины ))

    • @TheArtofDevelopment
      @TheArtofDevelopment  2 ปีที่แล้ว +1

      а что они предлагают возвращать? интерфейс ?

    • @cegheyYT
      @cegheyYT 2 ปีที่แล้ว

      @@TheArtofDevelopment на вызывающией конструктор функции я и так принимаю в виде интерфейса. Но сказали что это плохая практика, нужно делать экспортируемым сам тип. Хотя я не понимаю что плохого в таком подходе, Вот и ищу где почитать про самый правильный способ ))

    • @PeWpIC
      @PeWpIC 2 ปีที่แล้ว

      @@cegheyYT Нужно проверить. Например у тебя есть интерфейс, а тебе нужно определить тип и кастануть к нему, если тип не экспортируемый, то не сможешь привести к нему

    • @PeWpIC
      @PeWpIC 2 ปีที่แล้ว

      Ну и вообще странно делать тип не экспоритруемым, если предпологается, что он будет использоваться за пределами своего пакета

  • @fpway
    @fpway 11 หลายเดือนก่อน

    Зачем разделять dto в http и в service? Они имеют идентичные поля, разница лишь в json тэгах. Они на что-то влияют? Почему нельзя использовать один dto с тэгами на два слоя?

  • @userqh67vey6
    @userqh67vey6 ปีที่แล้ว +1

    архитектура все еще чистая или уже не очень?

    • @TheArtofDevelopment
      @TheArtofDevelopment  ปีที่แล้ว

      уже не очень. ждите новый ролик.

  • @Almas-2002
    @Almas-2002 2 ปีที่แล้ว +1

    можешь записать видео с крутыми запросами через select на go

  • @andreyparovozz
    @andreyparovozz 6 หลายเดือนก่อน

    Куда девать контроллеры миддл вари?

    • @TheArtofDevelopment
      @TheArtofDevelopment  6 หลายเดือนก่อน

      в отдельный пакет

    • @andreyparovozz
      @andreyparovozz 6 หลายเดือนก่อน

      @@TheArtofDevelopment
      В папке controllers?
      Вообще, предложенная архитектура мне очень нравится. Очень лаконично и логично!

  • @Кир-я9о
    @Кир-я9о ปีที่แล้ว +1

    Спасибо за отличные уроки по Го. В репозитории примера файл мэйн.го пустой. Так и задумано?

    • @MIhailRbk
      @MIhailRbk ปีที่แล้ว +4

      Потому что все адепты чистой архитектуры умалчивают о том как все это дерьмо инитить, а вот тут всплывает все дерьмо которое они так старательно отовсюду вычистили

    • @TheArtofDevelopment
      @TheArtofDevelopment  ปีที่แล้ว

      я не адепт) но проблемы есть везде

  • @preegnees6664
    @preegnees6664 ปีที่แล้ว +1

    А есть какая нибудь такая же крутая архитектура при работе с брокерами типа Кафки?

    • @TheArtofDevelopment
      @TheArtofDevelopment  ปีที่แล้ว

      так архитектура такая же. чтение из кафки - это как веб контроллер, запись в кафку это как слой работы с БД.

    • @preegnees6664
      @preegnees6664 ปีที่แล้ว

      @@TheArtofDevelopment понял, спасибо большое)))

  • @ibragimov-s3y
    @ibragimov-s3y 2 ปีที่แล้ว +2

    Ахтур

  • @АлександрСуходубенко-ю6н
    @АлександрСуходубенко-ю6н 2 ปีที่แล้ว +4

    Все круто конечно, но смотреть тяжело... Лайф формат классно, но сложно для восприятия.

  • @bsprspktvnk
    @bsprspktvnk 2 ปีที่แล้ว +2

    можно пожалуйста громче

  • @ubermensch1971
    @ubermensch1971 9 หลายเดือนก่อน

    Не понимаю какую роль тут играют сервисы? они же просто вызывают методы репозитория что можно делать и из юзкейсов

    • @TheArtofDevelopment
      @TheArtofDevelopment  9 หลายเดือนก่อน

      там размещаю дополнительную логику по сущности: обогащение, кеш можно туда воткнуть.

  • @vp_arth
    @vp_arth 7 หลายเดือนก่อน

    Вместо того, чтобы просто возвращать 200 с совершенно другой структурой ответа (бедные клиенты), посмотри хотя бы на `Content-Type: application/problem+json`
    Какая разница, транспорт это или нет. До того как понять, какова схема прилетела в ответе, клиент вынужден как-то распарсить ответ и убедиться, что это не ошибка.. Не надо так.

    • @TheArtofDevelopment
      @TheArtofDevelopment  5 หลายเดือนก่อน

      так нет другой структуры. поля error и message парсите всегда и все

  • @flamehowk
    @flamehowk ปีที่แล้ว

    Какие книги? Какие авторы? Какие модели? Те, которые по подиуму ходят, или те, которые по небу летают?
    Автор хоть бы 5 секунд потратил на то, чтобы объяснить - об чем тут вообще речь...

    • @TheArtofDevelopment
      @TheArtofDevelopment  ปีที่แล้ว

      5 секунд потратил

    • @flamehowk
      @flamehowk ปีที่แล้ว +1

      @@TheArtofDevelopment Наверное где-то в другом видео, ссылку на которое автор дать забыл. Да Вы просто переслушайте свое видео - там нет никакого объяснения. Сторонний зритель заходит и ощущает себя пришедшим на середину пьесы...