Приветствую. Встал вопрос. Есть ли вообще смысл валидировать обьекты, например

DTO, используя подход:
заполнить данными -> validate(object) ?
По сути, что это значит - мы создаем обьект, который, потенциально, может быть создан в невалидном состоянии и если он не будет провалидирован, то дальнейшее поведение основанное на это обьекте может строиться с использованием невалидного состояния обьекта, чего мы желаем ибежать

17 ответов

22 просмотра

Есть такой подход. Но тут скорее первичная валидация, дальше должна быть валидация внутри бизнес объектов

Chiki-Briki ️️ Автор вопроса
Павел Г.
Есть такой подход. Но тут скорее первичная валидац...

Ну это не дает ответа на вопрос. Так ли это, что с таким подходом мы создаем невалидный обьект? И что мы должны избегать это

Банально создают валидирующий мидлвар (вроде даже в самой симфе сразу есть), который валидирует команду мессенджера. Т.е. не сам хадлер валидирует а бас

Chiki Briki ️️
Ну это не дает ответа на вопрос. Так ли это, что с...

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

Chiki-Briki ️️ Автор вопроса
Павел Г.
Банально создают валидирующий мидлвар (вроде даже ...

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

Chiki Briki ️️
кстати на счет места валидации, как по мне - оно д...

у тебя в любом месте приложения могут ВНЕЗАПНО возникнуть невалидные дто? или же только в тех местах, где юзеры тебе засылают свои запросики?

Chiki Briki ️️
кстати на счет места валидации, как по мне - оно д...

Звучит логично, тоже задавался этим вопросом. Тут правда момент, что это первичная валидация, скорее чтобы фронту отдать данные и мессаджи. Внутри все логика "валидирует" в своих процессах

Chiki-Briki ️️ Автор вопроса
Шурик
у тебя в любом месте приложения могут ВНЕЗАПНО воз...

ничто не мешает какому-то Васяну добавить модуль, который будет собирать даные с АПИ, создавтаь из них ДТО и без валидации отправлять мне в метод

Chiki Briki ️️
ничто не мешает какому-то Васяну добавить модуль, ...

то есть невалидные данные появляются только там, где твоя система взаимодействует с внешним миром, да?

Chiki-Briki ️️ Автор вопроса
Шурик
то есть невалидные данные появляются только там, г...

это один из кейсов, ничто не мешает какому-то Васяну в крон команде создать невалидный ДТО и отправить мне в метод

Chiki Briki ️️
ничто не мешает какому-то Васяну добавить модуль, ...

Ваш метод должен внутри себя такое предотвращать. Это БЛ, а если не БЛ - то это просто данные, которые впринципе и должны быть любые.

Chiki Briki ️️
ничто не мешает какому-то Васяну добавить модуль, ...

по такой логике - никто не мешает тому же васяну просто убрать всю валидацию на проекте

Chiki Briki ️️
это один из кейсов, ничто не мешает какому-то Вася...

Давайте лучше пример невалидного ДТО и метода

Chiki-Briki ️️ Автор вопроса
Шурик
по такой логике - никто не мешает тому же васяну п...

перед тем, как что-то менять или удалять - 10 раз подумает (если уж совсем не Василий), а забыть добавить / пропустить требования - запросто

Chiki Briki ️️
это один из кейсов, ничто не мешает какому-то Вася...

если исходить из того, что у тебя в команде работают либо враги либо долбоёбы - выхода нет вообще.

Chiki Briki ️️
перед тем, как что-то менять или удалять - 10 раз ...

Тут просто такой момент, ваша логика должна быть жесткая и без этой валидации. Просто с ней ваш метод не упадет по 500, а отдаст красивый результат.

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта