Size: a a a

2020 July 20

A

Aikidos in Go-go!
Никита
Очень интересный момент по Clean Architecture. В какой пример чистой архитектуры не посмотреть, везде для доступа к базе делают репозиторий на сущность. Однако на диаграмме, которую Боб использует для отображения своей архитектуры, за доступ к базе у него отвечает один класс – Entity Gateway. То есть Gateway, который оперирует несколькими сущностями, а не Gateway на сущность.

https://i.stack.imgur.com/fynVd.png

Лично Боб нигде не упоминает, что Gateway должен быть на каждую сущность, и исходя из его диаграммы, доступ к нескольким сущностям идет через один класс.
ну, не всегда. иногда разделяют репозитории по логике.
тут всё, что связано с юзверями, а там всё, что с городами (условно)
источник

МП

Мимо Проходящий... in Go-go!
Артем Лазаренко
Веб советы не решают потребность?
Нет
источник

МП

Мимо Проходящий... in Go-go!
Dmitry Soloma
Sse это наличие все го лишь 2 х заголовков. Зачем там пилить библиотеку?
Чтобы не писать бойлерплейт на обслуживание хаба соединений, а делать лишь sse.Publish(url)
источник

ЛА

Локоть Анатолий... in Go-go!
Мимо Проходящий
Что именно не так со стандартной либой вкратце ?
Я не вижу стандартной либы по вопросу sse. Скиньте ссылку плз
источник

МП

Мимо Проходящий... in Go-go!
Локоть Анатолий
Я не вижу стандартной либы по вопросу sse. Скиньте ссылку плз
Я имел в виду ту, что первая гуглится
источник

A

Aikidos in Go-go!
Вообще, можно делить как заблагорассудится. Нужны аргументы почему именно так нужно разделить.  Да и, если подумать, удобный в аргументировании S никто не отменял (из SOLID'a). Можно разделять репозитории по одному на сущность и аргументировать, что иначе ты нарушаешь S. И усё.
источник

МП

Мимо Проходящий... in Go-go!
Половина измышлений мартина - полная чушь, 30 процентов - банальщина
источник

ЛА

Локоть Анатолий... in Go-go!
Мимо Проходящий
Я имел в виду ту, что первая гуглится
Есть либы которые гуглятся по server side events, есть которые по имени стандарта server sent events, всего из около 10. Мне вам сравнительный анализ конкретно выдать сейчас?
Я не вижу ни одной либы, которая покроет все мои задумки,
Такие как поддержка gzip, стопроцентная тестируемость и бенчмарки, отсутствие deprecated решений, функционал со множественными подписками, а не с единственной,
устойчивость либы к конкурентному использованию, например к старт/стопу
источник

AK

Anton Kucherov in Go-go!
Мимо Проходящий
Половина измышлений мартина - полная чушь, 30 процентов - банальщина
- Все принципы SOLID несколько лет назад были обоснованы с использованием Логики Хоара (Можете найти обоснование и попробовать его научными методами опровергнуть)
- Вся суть Clean Architecture строится вокруг идеи "Высокоуровневый код не должен зависеть он низкоуровнего" (За редким исключением при необходимости узких оптимизаций. И этот принцип можно встретить в огромной куче существующих IT систем разных мастей)
- То что очевидно одним не очевидно другим.
- Абсолютно не имеет значения как разбивать код по папкам, если соблюдено правило зависимостей и абстракции не текут.
источник

DS

Dmitry Soloma in Go-go!
Мимо Проходящий
Чтобы не писать бойлерплейт на обслуживание хаба соединений, а делать лишь sse.Publish(url)
На каждом проекте будет свой Publish. В одном коннекшоны будут привязаны к кользователю, в доугом паблиш будет оправилять всем активным, в третьем publish нужно реализовать через бизнесовые группы. Учитиывая стандарт, а именно наличие 2х заголовков, логику рассылку уведомлений по коннекшонам нужно пилить везде свою
источник

МП

Мимо Проходящий... in Go-go!
Anton Kucherov
- Все принципы SOLID несколько лет назад были обоснованы с использованием Логики Хоара (Можете найти обоснование и попробовать его научными методами опровергнуть)
- Вся суть Clean Architecture строится вокруг идеи "Высокоуровневый код не должен зависеть он низкоуровнего" (За редким исключением при необходимости узких оптимизаций. И этот принцип можно встретить в огромной куче существующих IT систем разных мастей)
- То что очевидно одним не очевидно другим.
- Абсолютно не имеет значения как разбивать код по папкам, если соблюдено правило зависимостей и абстракции не текут.
Это означает "за всё хороше против всего плохого". Тут в конкретике вопрос, а не в общих рекомендациях
источник

МП

Мимо Проходящий... in Go-go!
Dmitry Soloma
На каждом проекте будет свой Publish. В одном коннекшоны будут привязаны к кользователю, в доугом паблиш будет оправилять всем активным, в третьем publish нужно реализовать через бизнесовые группы. Учитиывая стандарт, а именно наличие 2х заголовков, логику рассылку уведомлений по коннекшонам нужно пилить везде свою
Всё это не нужно в данном случае. Аутентифицировался, подписался - получи пуш. Фсё
источник

Н

Никита in Go-go!
Aikidos
Вообще, можно делить как заблагорассудится. Нужны аргументы почему именно так нужно разделить.  Да и, если подумать, удобный в аргументировании S никто не отменял (из SOLID'a). Можно разделять репозитории по одному на сущность и аргументировать, что иначе ты нарушаешь S. И усё.
Все равно будет S нарушаться. Если заглянуть в Agile Software Development, Principles, Patterns, and Practices, у него в примере Payroll Database он в итоге разбивает класс PayrollDB с методами типа getEmpoyee(), getRecords() на класс по методу. то есть классы GetEmployeeOperation, GetRecordsOperation с методами Run…Operation. Что по сути сводится к банальным функциям, если выкинуть классы.

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

A

Aikidos in Go-go!
Никита
Все равно будет S нарушаться. Если заглянуть в Agile Software Development, Principles, Patterns, and Practices, у него в примере Payroll Database он в итоге разбивает класс PayrollDB с методами типа getEmpoyee(), getRecords() на класс по методу. то есть классы GetEmployeeOperation, GetRecordsOperation с методами Run…Operation. Что по сути сводится к банальным функциям, если выкинуть классы.

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

AK

Anton Kucherov in Go-go!
Никита
Все равно будет S нарушаться. Если заглянуть в Agile Software Development, Principles, Patterns, and Practices, у него в примере Payroll Database он в итоге разбивает класс PayrollDB с методами типа getEmpoyee(), getRecords() на класс по методу. то есть классы GetEmployeeOperation, GetRecordsOperation с методами Run…Operation. Что по сути сводится к банальным функциям, если выкинуть классы.

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

A

Aikidos in Go-go!
Я же не спорю.
источник

A

Aikidos in Go-go!
Anton Kucherov
- Все принципы SOLID несколько лет назад были обоснованы с использованием Логики Хоара (Можете найти обоснование и попробовать его научными методами опровергнуть)
- Вся суть Clean Architecture строится вокруг идеи "Высокоуровневый код не должен зависеть он низкоуровнего" (За редким исключением при необходимости узких оптимизаций. И этот принцип можно встретить в огромной куче существующих IT систем разных мастей)
- То что очевидно одним не очевидно другим.
- Абсолютно не имеет значения как разбивать код по папкам, если соблюдено правило зависимостей и абстракции не текут.
Интересно, как определили рамки ответственности у такой абстрактной величины как некое T и какое определение этому слову дали. Нужно будет почитать.
источник

Н

Никита in Go-go!
Anton Kucherov
А на каком языке пример? Может причина в том, что тогда в ходу была Java которая к тому же не имеля возможности создавать функции вне классов??
Да, в джаве ок, там иначе нельзя. Но в Го та же проблема: функцию то сделать можно, но как нам это скрыть за интерфейсом? Может есть какой-то ФПшный подход (а он наверняка есть), чтобы “мокать” конкретные функции, но я не знаю его (
источник

A

Aikidos in Go-go!
Самый лучший принцип разработки, "нормально делай, нормально будет". Лучше ещё не придумали.
источник

МП

Мимо Проходящий... in Go-go!
Локоть Анатолий
Есть либы которые гуглятся по server side events, есть которые по имени стандарта server sent events, всего из около 10. Мне вам сравнительный анализ конкретно выдать сейчас?
Я не вижу ни одной либы, которая покроет все мои задумки,
Такие как поддержка gzip, стопроцентная тестируемость и бенчмарки, отсутствие deprecated решений, функционал со множественными подписками, а не с единственной,
устойчивость либы к конкурентному использованию, например к старт/стопу
Не надо анализ. Я употребил слово вкратце. Ну gzip решается элементарно, start/stop достаточно на уровне сервера. Устойчивость к конкурентному использованию и депрекейтед решения - это как?
источник