@oop_ru

Страница 658 из 785
Sergey
26.05.2018
10:50:01
Делаю чтобы один процесс не бегал между базами и зостами
ну делай, ты ж всеравно очередь какую-то делаешь по итогу внутри

Denis
26.05.2018
10:51:17
велосипеды

зато свои)

скучно

Google
Sergey
26.05.2018
10:54:11
зато свои)
хотел родить шутку в стиле яжматери но чет не вышло....

Hell
26.05.2018
15:47:01
Как обьяснить июню, что switch case это плохо?

Sergey
26.05.2018
15:50:34
Как обьяснить июню, что switch case это плохо?
свитч не плохо сам по себе. Плохо если у тебя он сложный и постоянно меняется. С другой стороны есть задачи где свитч это самый адекватный способ решать проблему

Dmitriy
26.05.2018
15:53:51
свитч добавляет 2 (!!!) уровня вложенности. Отсюда ухудшение читаемости, основная логика функции или метода должна быть на первом уровне всегда. Это удобнее

*на первом уровне после сигнатуры

Hell
26.05.2018
15:55:03
Dmitriy
26.05.2018
15:55:20
еще необязательность брейков - это потенциальный баг, причем серьезный.

Dmitriy
26.05.2018
15:56:03
статический анализ тебе поможет
Т.е. ты уверен, что брейки ДОЛЖЫ быть всегда?!

Sergey
26.05.2018
15:56:04
как?)
ну он как минимум скажет что нету бряк)

Aleh
26.05.2018
15:56:12
так это может быть фичей

Google
Dmitriy
26.05.2018
15:56:19
вот-вот

Hell
26.05.2018
15:56:24
Sergey
26.05.2018
15:57:29
Ну ОК, а совместно с "Божественным объектом", нарушением "SRP" и тупо длииной файла в 500000 строк из за него?
- "божественный объект" - это не про свитч, это про связанность. Ну то есть ты можешь и без свитча такой замутить. - SRP - вопервых важно что делает свитч. Сам факт его наличия не говорит о нарушении SRP - можно говорить о нарушении OCP если бы мы могли говорить что ты можешь этот принцип не нарушать в принципе

но да, если есть возможность заменить на chain or responsibilities/strategy то стоит заменить. Но иногда это не дает профита никакого

Hell
26.05.2018
16:00:42
э...

Sergey
26.05.2018
16:00:54
внутри каждого case полотно кода, которое так и просится в класс, имплементирующий интерфейс
твоего коллегу судя по всему надо научить основам функциональной абстракции и разделения ответственности. свитч тут просто симптом проблемы

не концентрируй внимание на свитче а то он подумает что проблема именно в этом

и продолжит говнокодить но просто теперь в более маленьких файлах

Sergey
26.05.2018
16:02:37
вы вобще блог автора книги по DI читали?
бля понял, пошел тебя банить опять

Aleh
26.05.2018
16:02:45
)))

Denis
26.05.2018
16:02:53
А смысл банить?)

Hell
26.05.2018
16:03:33
В смысле? Я все сделал, как описано в его блоге

Sergey
26.05.2018
16:03:48
В смысле? Я все сделал, как описано в его блоге
то есть ты джун которому надо что-то объяснять?

Hell
26.05.2018
16:04:26
то есть ты джун которому надо что-то объяснять?
я другому программисту должен объяснить

Sergey
26.05.2018
16:04:34
Google
Sergey
26.05.2018
16:05:10
нет, просто у него проблемы с абстракцией
судя по этому ответу - не у него одного

Hell
26.05.2018
16:08:18
и причем здесь switch?)
Итак, у меня была проблема: изначально был выбран switch case который потом разрастался и превращал метод клааса и сам класс в Бога

Aleh
26.05.2018
16:09:22
убери разрастание, если надо постоянно что-то добавлять, то воспользуйся OCP

Hell
26.05.2018
16:15:15
проблема не в switch case, а в разрастался
после проведения рефакторинга в классы, имплементирующие единый интерфейс и у которых появятся зависимости, ты все еще будешь каждый класс инстанцировать в своем case или все таки сообразишь, что это отображение "ключ case -> интанц класса"

Aleh
26.05.2018
16:15:40
и?

Hell
26.05.2018
16:17:08
Зачем нужен здесь swich case, если есть словарь?

Sergey
26.05.2018
16:17:43
Зачем нужен здесь swich case, если есть словарь?
ну вот когда ты докопаешься в чем между ними разница - тогда поговорим

Hell
26.05.2018
16:19:14
ну вот когда ты докопаешься в чем между ними разница - тогда поговорим
В нормальных IoC контейнерах есть KeyedXXX, который все это может в одну строчку

Sergey
26.05.2018
16:21:00
В нормальных IoC контейнерах есть KeyedXXX, который все это может в одну строчку
да, свитчи используются исключительно для конфигурации IoC контейнеров

не знаю, напиши лексер какой для разнообразия

или реализацию регулярок

Sergey
26.05.2018
16:23:33
короч возвращаясь в вопросу - switch/case не являются плохим решением само по себе. Но если ты возьмешь инструмент и воспользуешься им не по назначению - да получится херня

можешь подумать например чем switch от dictionary отличается в плане того как оно в рантайме работает, как оно там по памяти, что быстрее и т.д.

Sergey
26.05.2018
16:24:23
Aleh
26.05.2018
16:26:27
каких таких?

задачи бывают разные, именно поэтому есть разные инструменты и разные конструкции, внезапно)

Sergey
26.05.2018
16:27:04
зачем на таких задачах скорость работы? Мы же сейчас говорим о Clean Code
еще раз - ты рассматриваешь switch case в одном конкретном примере и исходя из оного пытаешься кому-то там объяснять что switch/case это плохо потому что есть IoC контейнеры

Google
Sergey
26.05.2018
16:27:55
хотя я просто посочувствую твоему коллеге.... учить он там кого-то собрался

Sergey
26.05.2018
16:32:14
я пытаюсь обяснить, что в данном случае switch case это плохо
ну так ты исходи не из того что switch case плохо, а покажи как можно по другому ту же задачу решить

и потом сравни плюсы и минусы

ну то есть ты же можешь сформулировать что тебе этот самый clean code дает?

можешь человеку просто дать почитать чего по OCP или тот же clean code Мартина

Hell
26.05.2018
16:34:32
Admin
ERROR: S client not available

Sergey
26.05.2018
16:34:48
Навигация по коду, оченЬ просто найти
ну это зависит от того как сделаешь

навигация по коду это не основное ради чего все это делается

Hell
26.05.2018
16:35:12
ну это зависит от того как сделаешь
я написал как я это сделал

навигация по классам гораздо лучше чем по case-ам

Sergey
26.05.2018
16:38:10
ну ок

Hell
27.05.2018
07:51:51
ну ок
Какие еще буду приемущества, если вместо switch case будет словарь

militska
27.05.2018
07:54:45
разные варианты реакций? по одному вараинту дополнительно письмо отправить, по другому файлы удалить, по третьему ещё пару объектов создать

Дмитрий
27.05.2018
09:10:40
Sheldhur
28.05.2018
05:35:55
ку

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

чтобы потом никаких проблем со спамом не словить

Dmitriy
28.05.2018
05:42:18
все зависит от настроек клиентских почтовиков и твоего

Google
Sheldhur
28.05.2018
05:46:50
каких настроек?

Dmitriy
28.05.2018
05:48:55
от многих многих многих настроек, от fail2ban до черных или белых списков спамлистов

Sheldhur
28.05.2018
05:51:02
спасибо капитан

Dmitriy
28.05.2018
05:56:07
обращайтесь еще

Andrew
28.05.2018
07:21:59
Добырй день

Подскажите пожалуйста, для чего DomainEvent в DDD

Вот мы имеем все действия которые были совершены над моделью, они записаны. Дальше что? Что это дает?

Как, где, когда и зачем это можно или нужно использовать?

Как понять какой евент диспатчер использовать Symfony или свой кастомный DomainEventDispatcher?

Как лучше получать сущность, каждый раз собирая ее из ивентов или из БД (Redis)?

Кешировать DomainEvents?

Aleh
28.05.2018
07:39:43
Andrew
28.05.2018
07:39:51
Ага, есть такое

Aleh
28.05.2018
07:39:58
Andrew
28.05.2018
07:40:35
Какой диспатчер? Куда и зачем посылать?

Aleh
28.05.2018
07:41:04
Какой диспатчер? Куда и зачем посылать?
Какой используете в проекте

Andrew
28.05.2018
07:41:26
Оба)

DomainEventDispatcher и Symfony Event Disp

Aleh
28.05.2018
07:42:00
Ивенты помогают снизить связи между частями и помогают начать мыслить про цикл жизни сущности с точки зрения того, что с ней происходит

Andrew
28.05.2018
07:42:01
Когда какой-то ексепшен вылетяет, используем второй

Страница 658 из 785