@oop_ru

Страница 699 из 785
Evgeniy
28.06.2018
16:46:54
json программисты и xml программирование есть)

это когда ты давным давно пишешь на java а у тебя maven и spring и большая часть вопросов решается правкой xml

Dmitriy
28.06.2018
16:51:44
сегодня смотрел по куберу видос, там докладчик программировал на YAML

Vlad
29.06.2018
07:21:30
Ребя, правильно ли, если я валидирую входящие данные в дто, в который передаёт контроллер?

Google
Shaun
29.06.2018
07:24:46
Ребя, правильно ли, если я валидирую входящие данные в дто, в который передаёт контроллер?
Ну вообще да, у тебя дто может потом в другом месте использоваться и ты не знаешь будут ли всегда данные уже провалидированы

Vlad
29.06.2018
07:30:07
Понял, спс. Правда в моём кейсе дто некий прокси между сущностью и контроллером, то есть дто живёт только в данный период

Andrew
29.06.2018
09:56:39
Тут поудмал, есть ли смысл при Event Sourcing записывать в Event Store все изменения сущности? Зачем и почему? Скажем у меня юзер, у него 15 полей, поля могу часто изменятся. Но надо ли записывать все? Скажем мне нужен только балланс юзера для соседних сервисов, и на случай дебага, мне не надо знать сколько раз юзер менял свой пароль.

F01134H
29.06.2018
09:59:02
так у тебя получается баланс - отдельная сущность, с ней и работай

Артур Евгеньевич
29.06.2018
09:59:04
Конечно надо

Во первых event consistency во вторых возможность получить актуальное состояние на любой момент времени

Andrew
29.06.2018
10:00:00
Не слишком ли ето много, лишнего?

F01134H
29.06.2018
10:00:10
Во первых event consistency во вторых возможность получить актуальное состояние на любой момент времени
ему не нужно получать актуальное состояние пользователя, только баланса

Andrew
29.06.2018
10:00:30
Об етом и речь, но в будущем может понадобиться и другое поле.

F01134H
29.06.2018
10:00:36
с балансом как с сущностью и работай

Andrew
29.06.2018
10:00:47
Балланс пока как поле у юзера, без доп кошельков и т.д.

Google
F01134H
29.06.2018
10:01:18
Балланс пока как поле у юзера, без доп кошельков и т.д.
так ты это поле выдели в отдельный класс и с ним уже работай

и делай эвент сорсинг

Andrew
29.06.2018
10:01:25
Вот поетому я и задал вопрос, пока балланс поле у юзера, и вознико вопрос записывать ли другие ивенты

Артур Евгеньевич
29.06.2018
10:01:50
а зачем вообещ ты ES решил использовать?

у меня вопрос уже на этой фразе возник Тут поудмал, есть ли смысл при Event Sourcing записывать в Event Store все изменения сущности

типо ты хочешь менять состояние через domain events но какие то поля без событий, просто в "проекцию" херачить изменения?

Andrew
29.06.2018
10:03:43
да

как то так

но есть ли смысл

Артур Евгеньевич
29.06.2018
10:04:07
ну это полный пиздец, как мне кажется

F01134H
29.06.2018
10:06:53
но есть ли смысл
я тебе уже сказал, выноси баланс в отдельную сущность. Это тебе 100% понадобится

Andrew
29.06.2018
10:07:21
Спасибо

F01134H
29.06.2018
10:07:35
и проблема с эвент сорсингом решится

Sergey
29.06.2018
10:11:42
у меня вопрос уже на этой фразе возник Тут поудмал, есть ли смысл при Event Sourcing записывать в Event Store все изменения сущности
если так не делать то это уже не ES а что-то другое. Есть ли в этом смысл - определенно есть, просто не надо называть это ES

ну это полный пиздец, как мне кажется
пишем лэджеры на коленке

F01134H
29.06.2018
10:43:55
У меня есть класс фреймворка, имплементящий какой то свой интерфейс. Я добавляю ему необходимый мне функционал (класс расширяемый), а так же интерфейс под этот функционал. Классов таких много. И вот вопрос - нужно ли мне создавать абстрактный класс-родитель для всех моих классов (вроде прослойки между родительским классом фреймворка и моими наследниками), что бы гарантировать, что каждый мой класс будет имплементить необходимый функционал? Т.к. я попросту могу забыть заимплементить в одном из наследников мой интерфейс

Bohdan
29.06.2018
10:44:49
а забыть заэкстендить не можешь?

F01134H
29.06.2018
10:45:20
могу)

Bohdan
29.06.2018
10:45:36
тогда в чем профит?)

Google
F01134H
29.06.2018
10:45:38
выход из положения - проверять что класс является инстансом интерфейса в каком то одном месте?

Bohdan
29.06.2018
10:46:05
зачем?

F01134H
29.06.2018
10:46:32
зачем?
а как мне иначе гарантировать, что класс имплементит интерфейс

Bohdan
29.06.2018
10:47:09
просто у тебя что абстрактный класс, что интерфейсы имеют те же проблемы и делают одно и то же

более того, абстрактный класс может разрастись, когда интерфейсов станет больше - а разве все они нужны всем классам?

F01134H
29.06.2018
10:48:05
а как еще

Aleh
29.06.2018
10:48:28


Там не только про js получилось

Bohdan
29.06.2018
10:48:46
слишком мало графиков, а читать мне было лень)

ладно, тогда прочту

Aleh
29.06.2018
10:49:10
ладно, тогда прочту
Ну по диагонали поглядеть)

Bohdan
29.06.2018
10:49:14
а как еще
я бы делал интерфейсы и не любил себе мозги

F01134H
29.06.2018
10:49:32
ну ок

M
01.07.2018
08:13:00
Привет, помогите разобраться, пожалуйста. Обдумываю паттерн saga, возьмём пример, где резервируются деньги у пользователя, куда именно сохраняется информация о резерве, чтобы например из другого потока знать, что стоит резерв? Просто если в хранилище записать, то в случае факапа приложения, данные будут не консистентны немного. Спасибо.

Дмитрий
01.07.2018
08:49:56
Немного не консистентны это как немножко беременна ? Тут либо есть проблемы либо нет

Sergey
01.07.2018
10:51:23
обычно саги комбинируют с доменными ивентами, и когда тебе приходит ивент "деньги зарезервированы" то это уже факт, состояние на момент этого ивента уже консистентно и ты сможешь всегда по стриму ивентов восстановить стэйт

в том числе стэйт саги

но вообще сложно не зная всей задачи)

Google
Mykola
01.07.2018
11:17:44
Саги не обеспечивают консистентность сами по себе. Но они могут обеспечить фолбек

Sergey
01.07.2018
11:42:16
ну их задача по сути описание процесса, бизнес операция

а там уж как организовал процесс)

Admin
ERROR: S client not available

Mykola
01.07.2018
12:50:52
ну я к тому, что рейс кондишн они не решают

Михаил
02.07.2018
07:09:05
Небольшой вопрос по интерфейсам - предположим, у меня есть один жирный интерфейс, методов на 30. Его было бы неплохо разбить на интерфейсы поменьше, тем более что логически там методы хорошо группируются пачками по 5-6 штук. Вынести из этого интерфейса методы в интерфейсы поменьше, и унаследовать потом его от нескольких мелких интерфейсов - это норма?

Bohdan
02.07.2018
07:10:34
зависит от твоих целей

если ты хочешь потом переводить все классы, реализующие исходный интерфейс, на реализацию мелких интерфейсов, но не можешь сделать сразу - норма

в другом случае - а смысл?

Михаил
02.07.2018
07:12:36
если ты хочешь потом переводить все классы, реализующие исходный интерфейс, на реализацию мелких интерфейсов, но не можешь сделать сразу - норма
Т.е. в каждой отдельной части кода проверять обект на выполнение только того мелкого интерфейса, чей функционал в этой части кода нужен?

Bohdan
02.07.2018
07:13:19
Т.е. в каждой отдельной части кода проверять обект на выполнение только того мелкого интерфейса, чей функционал в этой части кода нужен?
я не совсем понял, что ты имеешь ввиду, но что-то вроде этого, да нет смысла разбивать интерфейс потому, что его методы логически ложатся в более мелкие группы

Bohdan
02.07.2018
07:13:56
если реализации этого интерфейса не всегда нуждаются во всех-всех его методах - тогда смысл есть

ладно, есть смысл и тогда, когда реализации используют +- все методы но тогда возникает вопрос "интерфейс ты разделил, а классы почему такие жирные?"

Михаил
02.07.2018
07:15:19
Логично. Есть что обдумать, спасибо за советы

Миша
02.07.2018
08:12:34
а как же Interface segregation principle
мы тут и говорили о разделении, что тебе не нравится?

Bohdan
02.07.2018
08:13:16
разбивать интерфейсы "по логике" содержимого - нет смысла разбивать по логике их использования - есть смысл

Google
Sergey
02.07.2018
08:15:22
а как же Interface segregation principle
это о том что бы проектировать интерфейсы под клиент. Что бы у тебя под клиентский код был ровно тот интерфейс (и тот контракт) который удобен клиенту.

ты не можешь говорить о ISP не описывая то, как интерфейс используется

интерфейс на 30 методов хоть и может соблюдать SRP явно нарушает ISP (потому что я не могу представить себе ситуацию когда все эти 30 методов понадобятся в рамках одной операции)

Roman
02.07.2018
08:18:29
SOLID єто ж не панацея, если видеш что чтото нарушается и ты понгимаеш зачем єто нужно то єто - ok

Миша
02.07.2018
08:19:02
чаще всего это не ок, но выхода нет

Миша
02.07.2018
08:21:10
Не видел чтобы SOLID нарушался и это было ок. Чаще всего это приводит к неприятным последствиям. Ты идешь на риск в любом случае имхо.

Миша
02.07.2018
08:22:01
Sergey
02.07.2018
08:22:02
и всегда соблюдались прицнипы

Bohdan
02.07.2018
08:22:48
ну как бы полностью соответствовать SOLID практически невозможно

Sergey
02.07.2018
08:23:01
ты не можешь соблюсти SOLID банально потому что принципы типа SRP и OCP требуют от тебя полного понимания кто и зачем хочет от тебя изменений. В начале проекта это вообще невозможно, с течением времени ты можешь делать более-менее объективные предсказания но по факту SOLID работает только в ретроспективе.

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