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

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

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

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

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

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

20 ответов

21 просмотр

ну у тебя была парадигма 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
И вы с самого начала сможете заложить архитектуру,...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта