
Adel
20.12.2018
17:25:45
Но она неправильная. Простую валидацию реквеста все равно надо делать

Mr. Blonde
20.12.2018
17:25:51

Adel
20.12.2018
17:26:29
В хорошем приложении ошибки уровня несоотвествия данных для во, не должны происходить

Юрий
20.12.2018
17:28:07

Google

Adel
20.12.2018
17:28:43
Вот тут я страниц двадцать на тему валидации уже написал. В январе надеюсь выложу.
https://leanpub.com/architecture-of-complex-web-applications

Дмитрий
20.12.2018
17:29:48

Pavel
20.12.2018
17:30:11
Данные валидируются в куче мест и в куче слоев

Mr. Blonde
20.12.2018
17:30:18

Pavel
20.12.2018
17:30:32
Начиная от электрического сигнала в сетевухе, который валидируется кодами хемминга

Adel
20.12.2018
17:30:41
В каждом своя. Валидация в vo обычно повторяет валидацию веб запроса

Дмитрий
20.12.2018
17:30:45

Adel
20.12.2018
17:31:41
Всякие ларавельки дают возможность лезть прям в базу в валидации запроса...

Mr. Blonde
20.12.2018
17:31:58

Adel
20.12.2018
17:32:28
нет же валидации в vo)
VO money не должно дать себя создать с отрицательной суммой. Это тоже типа валидация. Внутренняя

Дмитрий
20.12.2018
17:32:29

Google

Юрий
20.12.2018
17:32:33

Mr. Blonde
20.12.2018
17:32:54
нет же валидации в vo)
VO - должен быть всегда валидным, если мы создаем объект, значит мы уверены в достоверности данных

Дмитрий
20.12.2018
17:32:58

Adel
20.12.2018
17:33:34
Вот и получается некое дублирование валидации
Но это нормально

Mr. Blonde
20.12.2018
17:33:55
Данные должны быть не только валидными, но и пригодными для хранения (санитизация)

Дмитрий
20.12.2018
17:34:12

Adel
20.12.2018
17:35:04

Дмитрий
20.12.2018
17:35:25

Adel
20.12.2018
17:35:42
Ну тут мы расходимся
В большом проекте кто-то по-любому не проверит и полетят невалидные данные
Во могут создаваться много где

Дмитрий
20.12.2018
17:36:38

Mr. Blonde
20.12.2018
17:36:46

Дмитрий
20.12.2018
17:37:22
ну в php могут и контрактом брезговать разные.. минусы в карму им..что теперь)

Adel
20.12.2018
17:37:49
Смотри. Валидация в во есть. Но если вдруг туда попали невалидные данные - это значит кто-то в коде ошибся
Т.е. Это валидация не юзерских данных а кода который должен был отвалидировать

Дмитрий
20.12.2018
17:38:52
и vo не место, где мы должны это понять. Вот там где мы их возьмём оттуда, там и поймём

Google

Adel
20.12.2018
17:39:24
Я не хочу вычищать бд от невалидных данных

Дмитрий
20.12.2018
17:39:40
слава богу валидация и в других слоях есть

Adel
20.12.2018
17:44:13
Ничего. Домен только понимает что в поле percent должно быть от нуля до ста

dypa
20.12.2018
17:44:14

Adel
20.12.2018
17:44:37
А в поле email не просто строка а мыло

dypa
20.12.2018
17:45:12

Adel
20.12.2018
17:45:15
)

dypa
20.12.2018
17:45:45

Дмитрий
20.12.2018
17:45:48

Pavel
20.12.2018
17:46:00
Вы кажецца путаете уровни валидации
Данные могут быть валидны с точки зрения типов но невалидны с точки зрения бизнес логики

Adel
20.12.2018
17:46:17

Дмитрий
20.12.2018
17:46:51

Adel
20.12.2018
17:46:57

dypa
20.12.2018
17:47:05

Adel
20.12.2018
17:47:38

Pavel
20.12.2018
17:50:48
Вот кстати да, вот только я хорошего примера не смог найти в своё время
Можно легко придумать не очень реалистинчый но валидный пример.
Допустим один пользователь в интернет магазине может купить только один товар и всё.
userId=1 купил товар fooId=1 и в базу записалась реляция (1;1).
Потом он жмет купить товар fooId=2. В системе при работе появляется VO со полями {userId:1, fooId:2}. Эти данные валидны с точки зрения VO, но невалидны с точки зрения бизнес логики, так как такой пары не может существовать.

Google

Pavel
20.12.2018
17:51:33
И когда этот VO дойдет до валидатора логики, то станет ясно что в базе уже есть (1;1) и VO будет признан ошибочным.
В такой схеме сам VO конечно не должен в базе проверять что нет уже заказа.

Дмитрий
20.12.2018
17:52:22

Pavel
20.12.2018
17:53:05
Ну да, между расчетами отрицательные суммы могут существовать, но где то должен сработать валидатор, который не позволит зафиксировать такое состояние как в целом валидное для системы.

Дмитрий
20.12.2018
17:54:10
и место этому валидатору, на мой взгляд, не в VO. Иначе принцип описанный выше, рушится
хоть и очень хочется)

Pavel
20.12.2018
17:56:10
Ну если у тебя в системе нигде вообще не должно существовать отрицательных сумм, то можно и это в VO проверять

Дмитрий
20.12.2018
17:57:01
наверное тогда лучше создать объект, который не INT, а какой то диапазон, и его уже передавать в VO

dypa
20.12.2018
17:57:13
VO создает фабрика, может эванса почитаете?!

Дмитрий
20.12.2018
17:57:25
и относиться к такому значению не как к int, которое может иметь отрицательное значение, так как это не простой int, ну или что там для денег))

Artem
20.12.2018
18:02:14
unsigned тип и все. Че вы тут нагородили хз)

Дмитрий
20.12.2018
18:03:17

Artem
20.12.2018
18:04:11

Дмитрий
20.12.2018
18:05:04

Artem
20.12.2018
18:06:28
ну тык)
Нужен ЯП с нормальной типизацией, но лучше не валидировать, просто закрыть доступ пользователям и спать спокойно.

Дмитрий
20.12.2018
18:08:27

Adel
20.12.2018
18:15:06

ustasby
20.12.2018
19:24:23

Artem
20.12.2018
19:30:40
Это как?
Что именно как? Просто ограничивать тип и его точность/округление на уровне базы. В нормальных бд есть расширения дающие беззнаковые типы с подходящим округлением если речь о деньгах.

Google

Artem
20.12.2018
19:31:55
Можно конечно и на уровне орм ограничивать, либо миграции, если фреймворк используется, но это все фигня уже

ustasby
20.12.2018
19:38:46

Artem
20.12.2018
19:39:04
Олдскульщики подъехали )
Тут фигня в том, что доки устаревают, разработчики увольняются, тесты писать лень, а людям свойственно совершать ошибки. Т. е. Валидация на уровне кода - обязательно сломается. Потому если продукт будет поддерживаться иного пути нет.
Да не фигня, сойдет
Если ты живёшь в мире мелко сервисов, возможно, чтобы не вносить изменения а переписываться, иначе изначально проект до рождения уже легаси

ustasby
20.12.2018
19:42:42

Artem
20.12.2018
19:43:24

ustasby
20.12.2018
19:44:20
Так и пилим ?
А почему топчешь нашу радугу и всех пони уже распугал)

Artem
20.12.2018
19:45:51
Мне нравится куда идет пхп, особенно когда я только пресс релизы читаю, стараюсь быть в курсе)

ustasby
20.12.2018
19:48:22

dypa
20.12.2018
20:06:03

Alexander
20.12.2018
22:49:15
Привет, ребят
Да, я пью
И развлекаюсь
Так что джмми джефриз говорит, что все крутго
Короче, я хреновый шутник

Alexey
20.12.2018
22:56:09
чатик перепутал?

Alexander
20.12.2018
22:56:37
Не, у нас надо шутить
Это ты перепутал
Выгони меня, Лех)
А точно
Ты не можешь)