@gogolang

Страница 1431 из 1630
Lesha
20.09.2018
13:57:54
Либо же сделать два метода, например
а потом вы захотели хранить не в mysql, а pg. Еще метод + менять во всех местах

Pawel
20.09.2018
13:57:57
Мне лень приводить пример, потому что в три строчки он не уместится, и даже в тридцать строчек тоже скорее всего не получится уместить.
Если ты не в состоянии описать пользу отабстракции в нескольких словах на понятном языке , значит либо пользы нет, либо ты абстракцию не понимаешь

Никита
20.09.2018
13:58:17
а потом вы захотели хранить не в mysql, а pg. Еще метод + менять во всех местах
Окей, ну вот все скрываем значит за методом Get/Create

Google
Никита
20.09.2018
13:58:24
Нас в принципе не волнует откуда и как оно получает

Lesha
20.09.2018
13:58:47
Окей, ну вот все скрываем значит за методом Get/Create
Хочу тестировать отдельно кэш и работу с бд, а потом еще и связку

V
20.09.2018
13:59:08
Если ты не в состоянии описать пользу отабстракции в нескольких словах на понятном языке , значит либо пользы нет, либо ты абстракцию не понимаешь
вам уже все описали несколько раз, причем часть кейсов вы наммеренно попросили опустить и не описывать, хотя они тоже реальны

Алексей
20.09.2018
13:59:23
Maksim
20.09.2018
13:59:29
в чём плюсы миллион раз описали. Если человек на столько крут, что понять этого не в силах, это проблема человека и перекладывать её на других - по меньшей мере глупо.

Никита
20.09.2018
13:59:33
Aleksandr
20.09.2018
13:59:40
Нас в принципе не волнует откуда и как оно получает
хорошо. ты с некоторыми оговорками описал репозиторий

Никита
20.09.2018
14:00:08
хорошо. ты с некоторыми оговорками описал репозиторий
Странно, реализации то вроде как разные

Lesha
20.09.2018
14:00:15
Ну, вот тут возможно проблема
Вот, польза репозитория как раз в том, что бы абстрагировать работу с данными (условно get/set) от конкретной реализации этой работы (redis-get, redis-set)

Maksim
20.09.2018
14:00:27
Странно, реализации то вроде как разные
ты просто разделил запись и чтение, которое почему-то проигнорировал

Google
Aleksandr
20.09.2018
14:00:39
Странно, реализации то вроде как разные
оговорка в том, что не сущность сама себя сохраняет и сама себя из хранилища получает

Lesha
20.09.2018
14:00:56
Ну, вот тут возможно проблема
а имея унифицированный интерфейс, ты сможешь в своем коде прокидывать разные реализации интерфеса и не придется ничего переписывать (зачастую)

Никита
20.09.2018
14:01:15
Я вот часто видел что в структуру репозитория пихают бд. Верно?

Maksim
20.09.2018
14:01:16
чтением у тебя в примере занимается репозиторий, а запись почему-то ответственность сущности.

Pawel
20.09.2018
14:01:18
Это правда, но давайте снизим градус
Заметьте, я не плююсь и не даю ни кому оценок в отличие от. Просто интересно как они это пытаются объяснить.это смешно же

Никита
20.09.2018
14:01:57
да
Окей. Как в этом случае обстоят дела с транзакциями?

Алексей
20.09.2018
14:02:20
Заметьте, я не плююсь и не даю ни кому оценок в отличие от. Просто интересно как они это пытаются объяснить.это смешно же
Обычно я тоже стараюсь не давать оценок. Но тут уж не сдержался, слишком вопиющий случай.

Никита
20.09.2018
14:02:40
Допустим транзакция вида: создаём сообщение, обновляем счетчик сообщений.

Как это будет организовано через репозитории?

Maksim
20.09.2018
14:03:07
в репозитории просто этого быть не должно)

Никита
20.09.2018
14:03:20
Не должно быть чего? Транзакций?

Maksim
20.09.2018
14:03:30
ровно как и создания чего-либо

Lesha
20.09.2018
14:03:33
Как это будет организовано через репозитории?
например композиция репозиториев с подержкой транзакций между ними

Артем
20.09.2018
14:03:41
А почему создавать две? Почему мы не можем определить всю эту логику внутри метода получения Юзера?
потому что код пишут много людей и требуется проводить границы между командами одни могут заниматься логикой - взаимодейтсвием пользователей друг с другом другие - сохранением даных чтобы не видеть файл user.go на 5к строк в котором будет перемешано и работа с БД и с кешем и запросы в third-party и логика приложения и используют абстракции

Maksim
20.09.2018
14:03:58
там выше накидывали за cqrs. очень в цвет накидывали

Артем
20.09.2018
14:04:28
если есть проблемы с данными - ты ищешь их в коде репозитория

если есть проблемы с логикой - в других частях приложения

Maksim
20.09.2018
14:06:04
там выше накидывали за cqrs. очень в цвет накидывали
cqrs - архитектурный паттерн, который позволяет разделить чтение и запись. Жить станет чуточку проще, ровно как и код организовывать.

Google
Maksim
20.09.2018
14:07:07
с cqrs жить становится сложнее, это больше вынужденная мера
Только когда начинаешь втягиваться, как и с любым подходом.

Maksim
20.09.2018
14:07:36
втягиваться?
понимать, если угодно.

Артем
20.09.2018
14:08:30
на определенном этапе развития приложения, когда за его работой становится сложнее следить, требуется применение более сложных подходов, которые обеспечат распределение нагрузки на людей (а так же рост самой команды)

но это никак не упрощает саму разработку

и поддержку

Maksim
20.09.2018
14:08:58
как cqrs относится к тому, что ты написал?

Артем
20.09.2018
14:09:05
как и применение репозитория, о котором тут срались выше

он тоже усложняет код

Lesha
20.09.2018
14:09:28
он тоже усложняет код
Репозиторий усложняет код а?

Maksim
20.09.2018
14:09:31
блин... вы тут на наркоте что ли сидите

Bohdan
20.09.2018
14:10:08
ну он-то усложняет, да но я лично не хочу писать в процедурном стиле даже на простейших проектах

Артем
20.09.2018
14:10:21
Репозиторий усложняет код а?
если у меня api из трех методов в 30 строк кода в каждом - зачем мне абстрагироваться от хранилища?

Pawel
20.09.2018
14:10:26
он тоже усложняет код
Чем сложнее тем лучше, разве вы ещё не поняли?)

V
20.09.2018
14:10:26
обработка ошибок усложняет код

Артем
20.09.2018
14:10:45
Артем
20.09.2018
14:11:13
сегодня их три, завтра их 33
и вот тогда и появятся репозитории

рефакториг никто не отменял

Google
Lesha
20.09.2018
14:11:24
и вот тогда и появятся репозитории
дакси (ой это с греческого хорошо), не панацея

V
20.09.2018
14:11:27
нет, правда, гораздо проще же везде делать panic(err), а в мейне один обработчик паники ?

Pawel
20.09.2018
14:12:35
Bohdan
20.09.2018
14:13:08
V
20.09.2018
14:13:28
спасибо за ценный совет, пора мне перестать пукать в этом чате

Никита
20.09.2018
14:13:32
Кстати, такой вопрос по логированию: я так понимаю что хоший подход инициализировать БД, логгер и прочее в мейне и потом пробрасывать это все через уровни. Вот мы на уровне бизнес логики, и у нас идёт обращение к БД через какой то метод. Где мы должны логировать – на уровне обращения к БД либо на уровне бизнес логики ?

Заранее извиняюсь если сумбурно

Pawel
20.09.2018
14:13:43
Более того, панику вообще не надо обрабатывать. Любителям репозиториев на заметку

V
20.09.2018
14:14:20
вы видите те же слова, что и я?

Admin
ERROR: S client not available

Pawel
20.09.2018
14:14:46
зависит от ситуации
Оч редко Пару раз в жизни

Никита
20.09.2018
14:14:54
бизнесс логика ничего не знает про базу и логгер. Это инфраструктура
Ну вы ведь явно пробросите их как параметры. Либо же объявите на цровне пакетов?

Maksim
20.09.2018
14:15:30
что и куда я проброшу? я не буду в доменный слой пробрасывать коннект к бд и логгер. нефиг им там делать

Никита
20.09.2018
14:15:48
Окей. Тогда какой подход выберете вы?

Maksim
20.09.2018
14:16:25
не буду этого делать, очевидно. я вопрос твой понять не могу.

V
20.09.2018
14:16:28
чем плох логгер в бизнес-логике? 0о

Maksim
20.09.2018
14:16:44
чем плох логгер в бизнес-логике? 0о
а чем плох коннект к бд?)

Google
V
20.09.2018
14:16:56
тем, что он не используется в бизнес-логике и там не нужен

Maksim
20.09.2018
14:17:07
тот же ответ и логгеру

V
20.09.2018
14:17:28
но ведь в бизнес-логике требуется логирование

Никита
20.09.2018
14:17:31
Так где Логировать?

Maksim
20.09.2018
14:17:43
бизнесс логике логирование зачем? приведи пример

V
20.09.2018
14:17:49
не запросов к базе, но вещей связанных с бизнес-логикой

Никита
20.09.2018
14:18:50
бизнесс логике логирование зачем? приведи пример
Ну вот надо, хотят что то логировать

Maksim
20.09.2018
14:19:27
Ну вот надо, хотят что то логировать
ну, пускай логируют. Но почему это задача домена?)

Никита
20.09.2018
14:19:45
Ну вот мы хотим логировать что то из домена

Где нам это делать

Maksim
20.09.2018
14:20:40
я не совсем уверен, что смогу тебе в чатике объяснить тему нескольких книг. Но давай от обратного: что для тебя домен. Попробуй привести пример какой-нибудь из жизни.

Никита
20.09.2018
14:23:04
я не совсем уверен, что смогу тебе в чатике объяснить тему нескольких книг. Но давай от обратного: что для тебя домен. Попробуй привести пример какой-нибудь из жизни.
Вызывают у нас допустим апишку для создания поста. На уровне домена мы определяем что происходит при этом вызове, а именно: проверяем может ли делать это юзер, создаём сам пост, обновляем счётчик постов, возвращаем айди поста. В таком духе

Maksim
20.09.2018
14:24:44
а что в этом кейсе бизнее логика? бизнесу не насрать, например, какой http сервер ты юзаешь, что бы получить запрос на создание поста?

Никита
20.09.2018
14:25:28


Ну вот Logic tier

Maksim
20.09.2018
14:26:04
на adr смахивает

ну т.е. Logic tier у нас умеет принимать запросы, как-то их крутить, ходить за данными и давать указание на построение проекций?

если на все вопросы ответ положительный, то мы под доменом явно понимаем разные вещи.

Никита
20.09.2018
14:27:57
Что вы понимаете под доменом?

Страница 1431 из 1630