170 похожих чатов

Всем привет Часто вижу тут упоминание таких практик, как репозиторий (в

контексте доступа к БД), разделение пакетов service и api, + все это еще приправлено DI

Мне как человеку с бекграундом Django/flask многое из этого чуждо и непонятно. Я привык как в джанге - есть views, есть models, и т.д.

В связи с этим вопрос - что бы почитать такого, (статьи/книги), чтобы сложить целостное представление об архитектуре веб-приложения на го? Не совсем с нуля, а вот как у меня, с бекграунда другого стека?

Пока вижу только тонны мусорных статей, где описано максимум "как импортировать qin и сделать todolist"
Мне интересно, как сложные проекты делаются в целом.
(+ будет круто, если там же покажется, как этот код сделать тестируемым, но это опционально - могу и отдельно почитать)

20 ответов

8 просмотров

ну у тебя была парадигма MVC, а тут другая

чистая архитектура чистый код паттерны gang of four enterprise patterns (https://martinfowler.com/articles/enterprisePatterns.html)

GO тут не причем. Clean architecture

Степан
model-view-controller, не?

Да, и это для десктопа.

Vadim
mvc в десктопе. У него adr, mvp.

мало кто понимает что MVC это не MVC. в интернете везде написано что в django/flask это MVC, даже про Spring также написано...

Artur Karapetov
мало кто понимает что MVC это не MVC. в интернете...

Мало кто понимает, что MVC изначально вообще между V и С не предполагает транспорт ) это чисто паттерн для GUI. В asp MVC у доке типа написали что они так видят MVC и пошло поехало

Лучшая архитектура та, что форсится линтером. Один раз договорились, накидали правила, закинули в CI. Изменения (разработчики взрослеют, меняются взгляды) также только через новые договоренности, которые превращаются в правила. Что там в итоге выберете – чистую или тупой crud в контроллерах – неважно, важно делать это единообразно.

Про мусорные статьи ты верно написал - их тонна. Пойми вот эту статью: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

Vadim
Лучшая архитектура та, что форсится линтером. Один...

Разные bounded context могут требовать разного уровня проработки. К тому же в процессе развития, в каких-то частях приложения может оставаться говнокод. Проще уж оставить как есть чем менять правила чтобы идти рефакторить для удовлетворения линтера

Айван
Разные bounded context могут требовать разного уро...

Линтер либо берется с самого старта, тогда говнокод там оказаться не может, либо уже на готовый проект, тогда подгоняется под правила, а говно в baseline отправляется и не тревожит никого.

Vadim
Лучшая архитектура та, что форсится линтером. Один...

Интересно, что в строительной архитектуре, каркас делает инженер-конструктор из конструкторского бюро, по заказу архитектора. А потом на конструкцию натягиваются хотелки заказчика. Т.е. в случае с кодом, конструкция это код и структура директорий. Но она не является первичной. Она вторична, так как создаётся под конкретную архитектуру или архитектурную парадигму или школу

Тут проблема в том, что каждый хочет самую лучшую и современную архитектуру, из-за чего очень долго топчется на вопросах в духе "как назвать папку", "куда положить репозиторий" и так далее. Это как в одном чате по архитектуре писали, что, если ваш проект начинается с авторизации, он умрет. Проект надо начинать с фичей, выделять их, изолировать. Архитектура появится.

Vadim
Тут проблема в том, что каждый хочет самую лучшую ...

Архитектура сама не появится. Это набор наработок, проверенный временем, который точно будет работать и является опытом. А то что самотёком пойдет - не факт что заработает в итоге. Потому что комплексити бизнес логики нужно закладывать в самом начале исходя из требований бизнеса. А там дальше уже и определять структуру. Но структура все-равно вторична. А архитектура первична.

NNurik N
Архитектура сама не появится. Это набор наработок,...

Вот пример различия. Если по какой-то причине невозможно реализовать бизнесфичу потому, что текущая архитектура не позволяет этого сделать то это больша юя проблема. А если это не позволяет сделать текущая структура, то это уже проблема поменьше. Так как если она не противоречит архитектуре, то можно реализовать. В случае архитектуры нужны вообще подходы менять, а это очень затратно.

NNurik N
Вот пример различия. Если по какой-то причине нево...

И вы с самого начала сможете заложить архитектуру, которая будет удовлетворять любой фиче? Не надо сравнивать со строительством, другой уровень ответствтенности, масштаб изменений. Архитектура приложений лучше всего на основе ретроспективы формируется, а для этого нужны фичи.

Vadim
И вы с самого начала сможете заложить архитектуру,...

Я больше про то умение компоновать паттерны из архитектуры. Если они правильно скомпонованы, но это легче поддерживать так как подводные камни уже известны используемых подходов. А потом переделывать но с учётом тех же критериев. Типа определить недостатки и достоинства каждого из подхода или паттерна который закладывается. Это даёт предсказуемость. А если самотёком все пустить то всегда будет жопа. Абсолютно всегда

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Народ всем привет Подскажите, как включить самописные dll библиотеки в итоговую сборку Сейчас при запуске dev сервера локально формируется папка build, из которой запускается...
Андрей
4
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
8
Доброе утро! Не совсем понятно как установить счетчик яндекс метрики на сайт. И потом ещё цели проставить?
Евгения
18
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Гуру, подскажите, меня уже критиковали за неумением, но и в инете я решения не нашел, тем более в доках абракадабры. В 12.1 студии появился новый тип TSQLTimeStampOffset , ест...
Delphi Photo
10
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Карта сайта