@oop_ru

Страница 692 из 785
Adel
21.06.2018
13:45:22
почему?
ну если создадут ИП с 12 цифрами, а потом поменяют на 10цифровое ИНН, то чтото будет не так, верно?

Dmitriy
21.06.2018
13:46:21
оно сингл вэлью в том плане что воспринимается как целостное значение. Типа валюта и количество денег
Тоесть единое целое которое не может существовать даже без одной его составной части? А например пост в бложике - может быть VO? Т.е. пост не может существовать без тайтла, боди и времени создания например

Google
Sergey
21.06.2018
13:47:27
суть VO в том что оно имутабельное, хочешь новое значение - сделай новое VO

Dmitriy
21.06.2018
13:48:35
В целом чем меньше у тебя мутабельных сущностей - тем бОльшая предсказуемость кода

Sergey
21.06.2018
13:48:40
и два VO равны только если стэйт этих VO одинаковый

Dmitriy
21.06.2018
13:49:12
Т.е для VO надо писать свой VO::equals(VO $another): bool

Sergey
21.06.2018
13:50:57
да

тип того

или у тебя язык умеет сравнение по значению)

но лучше конечно методом

Adel
21.06.2018
13:51:06
многого хочу от VO... я ж хотел простую валидацию. VO - Age например наверняка провалидирует цифровое значение возраста. чтобы сильно отрицательным не былг например

Bohdan
21.06.2018
13:51:40
а слегка отрицательным быть может?)

Adel
21.06.2018
13:51:51
ну эт от домена зависит :)

Dmitriy
21.06.2018
13:53:59
может рассматривается время до наступившего события, тогда у события может быть отрицательный возраст

Google
Adel
21.06.2018
13:54:36
в некоторых доменах возраст может считать отрицательным. до рождения плод вполне себе живой

но это мы отвлеклись. ладно

Alexey
21.06.2018
14:03:34
Парни, помогите по полкам разложить: Есть сущность, хранящаяся не нескольких системах Есть модель в коде, описывающая эту сущность и несколько сервисов, загружающие сущность из систем. Далее задача: загрузить одну и ту же сущность из разных систем и "смержить" различающиеся поля по определенной логике. И тут возникает вопрос: где должна быть логика этого мержа?

F01134H
21.06.2018
14:09:45
сущность в виде гномика, судя по всему

Bohdan
21.06.2018
14:13:21
семь параллельных красных линий...

Alexey
21.06.2018
14:15:26
это юзер

имеет место быть рассинхронизация данных между системами, поэтому именно такая постановка

Sergey
21.06.2018
14:16:07
всеравно непонятно

Bohdan
21.06.2018
14:16:09
отдельный сервис, который будет заниматься стягиванием и мерджем

Sergey
21.06.2018
14:16:21
в отдельный сервис базы данных

Alexey
21.06.2018
14:16:42
ну фактически да. Но на уровне кода это одна модель (DO)

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

сейчас так и есть - отдельный сервис, запрашивающий внешние системы и получающий из трёх объектов User четвертый такой же с "корректными" полями. Но что-то мне не нравится.

А смущает меня наверное то, что в сущности помимо сквозного id есть еще system1Id, system2Id, system3Id. Не нужно ли сделать отдельные модели и развести их наследованием?

Bohdan
21.06.2018
14:27:53
и иметь общий стейт в родителе?

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

но я пока не знаю, хорошо это или нет

Yury
21.06.2018
14:32:07
А вообще KISS

Alexey
21.06.2018
14:33:31
KISS - факт :)

Google
Sergey
21.06.2018
14:33:38
ну фактически да. Но на уровне кода это одна модель (DO)
ну значит никаких вопросов у тебя нет)

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

шарить данные между подсистемами так себе идея

Alexey
21.06.2018
14:35:25
я пока не понял, что у меня плохо модель разбита. А вот размазанные данные, увы, на текущий момент данность.

Sergey
21.06.2018
14:36:07
и ты связи не видишь?

Admin
ERROR: S client not available

Sergey
21.06.2018
14:36:16
как ты думаешь почему у тебя данные размазаны оказались?

и что можно было бы подругому сделать что бы не пришлось вообще шарить данные и потом их мерджить

Alexey
21.06.2018
14:41:42
данные размазаны оказались не у меня, а у трёх других подразделений (команд), который независимо друг от друга реализовали один и тот же функционал. А я теперь делаю совместимую мастер-систему. Немного в обратную сторону у меня причинно-следственная связь

Евгений
21.06.2018
15:42:54


Aleh
21.06.2018
15:45:38
Если вам надо переносить дублирующиеся данные в одну систему, то переносите, а не дублируйте их в новую систему:)

Alexey
21.06.2018
16:19:58
да я уже понял, что по существу вопроса я получу ответ только когда его сформулирую нормально

Дмитрий
21.06.2018
17:39:34
а для антирасистов есть такое?)
Напиши классическое «ненавижу расизм и негров»

Sergey
23.06.2018
16:58:27
https://www.youtube.com/watch?v=2iYdKQXGY2E

Bohdan
23.06.2018
18:33:26
https://www.youtube.com/watch?v=2iYdKQXGY2E
tldr есть? насколько понял - чисто на послушать и подумать о высоком

Sergey
23.06.2018
20:29:12
tldr есть? насколько понял - чисто на послушать и подумать о высоком
вот же ленивые... это ж Уди. - размышления на тему того, как софт меняет бизнес - советы о том, как объяснить бизнесу что софт который вы пишите для них это не проект а продукт (про различия так же) - мысль о том что переписать проект никогда не проще/дешевле чем отрефакторить существующий. И что "тут проще переписать" никогда не мотивируется здравым смыслом а скорее от безысходности. - интересная мысль что на поддержку любят садить джунов, хотя все понимают что баги фиксить и фичи пилить проще когда проект разрабатывается. То есть типа почему-то логично на более сложный вариант посадить джуна, который сделает все хуже, а на более простой посадить синьера. - О том как строить переговоры с бизнесом, типичные проблемы с ролями (например то что аналитик есть но у него нет обычно такого влияния что бы спорить с бизнесом, который на самом деле не требования нам приходит, а воркараунды к своим проблема, не самые эффективные часто), и о том как это все сосуществует с agile/lean/итеративными моделями - Опять о том что decoupling при помощи слоев это слишком наивная идея, и что резать приложение надо не только по горизонтали но и по вертикали, позволяя выстраивать каждую "вертикаль" функционала хоть со своей архитектурой. Если смотрел microservices, rules engine то там про то же

Дмитрий
23.06.2018
20:29:59
Начиная с "проще переписать" резко не согласен

Bohdan
23.06.2018
20:30:01
уфф, спасибо, я ожидал буквально одно предложение :)

Sergey
23.06.2018
20:30:30
Начиная с "проще переписать" резко не согласен
в любом правиле есть исключения, прежде чем "не соглашасться" посмотри плиз видос. НЕнавижу людей которые делают какие-то выводы по tldw/tldr

Google
Дмитрий
23.06.2018
20:30:43
А я в корне не согласен

Не в деталях

Bohdan
23.06.2018
20:31:08
аргументируй

Sergey
23.06.2018
20:31:16
А я в корне не согласен
1. у тебя есть опыт работы с приложением которому лет 5? 2. у тебя есть опыт "переписать с нуля" приложение которому лет 5 и которым пользуются, на которое завязан бизнес?

3. объем приложения и степень важности оного. Сроки.

Дмитрий
23.06.2018
20:31:29
Естественно переписать с нуля проще практически всегда, потому что ты учитываешь предыдущие ошибки и в целом опыт первой имплементации и не сдерживаешься лавиной застоявшихся проблем

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