Size: a a a

Software Design/Architecture/Zen

2020 October 27

VS

Vlad Sobenko in Software Design/Architecture/Zen
Apache DOG™
он не сервис
Ну это в распостраненных фреймворках так называют
источник

AD

Apache DOG™ in Software Design/Architecture/Zen
Vlad Sobenko
Ну это в распостраненных фреймворках так называют
распространенные фреймы пишут левой пяткой задней ноги люди которые не привыкли над чем либо заморачиватся
источник

VS

Vlad Sobenko in Software Design/Architecture/Zen
Apache DOG™
распространенные фреймы пишут левой пяткой задней ноги люди которые не привыкли над чем либо заморачиватся
Тем не менее. Юзают их в "ООП" не только лишь все.
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
Sergey Protko
на котлине это было бы так:

val names = Sorted(Unique(Capitalized(Replaced(FileNames(Directory("/var/users/*.xml"), "([^.]+)\\.xml", "$1"))));
не совсем 🙂
Идеоматично было бы
directory("/var/users/*.xml")
 .fileNames()
 .replaced("([^.+])\\.xml", "$1")
 .capitalized()
 .unique()
 .sorted()
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Anton Lakotka
не совсем 🙂
Идеоматично было бы
directory("/var/users/*.xml")
 .fileNames()
 .replaced("([^.+])\\.xml", "$1")
 .capitalized()
 .unique()
 .sorted()
тогда возникают нюансы с расширением
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
именно поэтому у котлина есть Extension функции
источник

AD

Apache DOG™ in Software Design/Architecture/Zen
Vlad Sobenko
Тем не менее. Юзают их в "ООП" не только лишь все.
применяемость не критерий хорошести
источник

AD

Apache DOG™ in Software Design/Architecture/Zen
человек существо которое люит говна пожрать
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
все эти фукнции -- кроме (directory наверное) -- экстеншены
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Добрый день!

Должно ли событие содержать полную информацию или достаточно идентификатора.

Например, мне нужно отправлять уведомление о новом комментарии. Как правильнее: событие содержит ID комментария, а подписчик уже сам вытянет комментарий и получит нужные данные, или же событие содержит всю информацию о комментарии и тогда подписчик просто берёт что ему надо?
источник

AD

Apache DOG™ in Software Design/Architecture/Zen
Сергей Предводителев
Добрый день!

Должно ли событие содержать полную информацию или достаточно идентификатора.

Например, мне нужно отправлять уведомление о новом комментарии. Как правильнее: событие содержит ID комментария, а подписчик уже сам вытянет комментарий и получит нужные данные, или же событие содержит всю информацию о комментарии и тогда подписчик просто берёт что ему надо?
очевидно что айдишник меньше, но у вас получается констреинт на консистентность айдишника с его содержимым
источник

AD

Apache DOG™ in Software Design/Architecture/Zen
иначе говоря айдишник применим если инфа потенциально не нужна
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Спасибо!
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
Сергей Предводителев
Добрый день!

Должно ли событие содержать полную информацию или достаточно идентификатора.

Например, мне нужно отправлять уведомление о новом комментарии. Как правильнее: событие содержит ID комментария, а подписчик уже сам вытянет комментарий и получит нужные данные, или же событие содержит всю информацию о комментарии и тогда подписчик просто берёт что ему надо?
с формальной точки зрения ивент должен содержать только необходимый минимум.  

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

Но с этим нужно быть осторожным.
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Anton Lakotka
с формальной точки зрения ивент должен содержать только необходимый минимум.  

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

Но с этим нужно быть осторожным.
текст комментария ок, но для уведомления будут полезна ещё и информация по объекту, к которому был добавлен комментарий, например, id поста, url поста, название поста... вероятно всё это закидывать в событие не правильно
источник

VS

Vyacheslav Startsev in Software Design/Architecture/Zen
Anton Lakotka
с формальной точки зрения ивент должен содержать только необходимый минимум.  

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

Но с этим нужно быть осторожным.
у него, скорее всего, не event source
источник

VS

Vyacheslav Startsev in Software Design/Architecture/Zen
Сергей Предводителев
Добрый день!

Должно ли событие содержать полную информацию или достаточно идентификатора.

Например, мне нужно отправлять уведомление о новом комментарии. Как правильнее: событие содержит ID комментария, а подписчик уже сам вытянет комментарий и получит нужные данные, или же событие содержит всю информацию о комментарии и тогда подписчик просто берёт что ему надо?
что подписчики делают с ивентом?
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Пока только для уведомлений использую.

Это не для обновления данных между контекстами.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Сергей Предводителев
Добрый день!

Должно ли событие содержать полную информацию или достаточно идентификатора.

Например, мне нужно отправлять уведомление о новом комментарии. Как правильнее: событие содержит ID комментария, а подписчик уже сам вытянет комментарий и получит нужные данные, или же событие содержит всю информацию о комментарии и тогда подписчик просто берёт что ему надо?
важный момент кому шлем сообщение.

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

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

Ивенты как часть публичного интерфейса в целом имеют те же правила что и все остальные вещи про интерфейсы - меньше экспоузим наружу - лучше.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
классическая ошибка людей которые ивент сурсинг юзают - реюз доменных ивентов и каплинг по всей системе
источник