Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Лапшекодим валидацию, или запрещаем вводить неправильные данные?

26.10.22 12:13
Re: Лапшекодим валидацию, или запрещаем вводить неправильные данные?
 
alex445 коренной житель
в ответ 7495 08.10.22 00:37, Последний раз изменено 26.10.22 12:18 (alex445)

Вот сейчас типичный кейс валидации встретил, и какой-то странный. Запросили с сервера таблицу и показали юзеру на клиенте. Естественно, клиенту передали набор данных с айдишниками в БД, но в UI их не показываем - т.е. айди не редактируемый. Юзер хочет удалить одно данное. Что делает старый код, который я переписываю - он берёт айдишник выбранного для удаления элемента, делает запрос в БД - есть ли с таким айдишником объект. Если есть, достаёт этот объект, читает его айдишник и передаёт в запрос на удаление на сервер. Получается, что айдишник, который хранится в наборе данных, показанных клиенту, не используется для отправки на удаление на сервер. Это что-то типа валидации - проверка, есть ли такой айдишник в БД? Типа, на клиенте кто-то подменил набор, переданный изначально с сервера?


По-моему, это чушь и лишние запросы в БД. Если так уж не доверяете клиенту, что считаете, что он может нередактируемый айди подменить, то валидация явно должна быть не через запрос в БД. Просто при попытке удалить несуществующий айди будет исключение на сервере, которое передают клиенту, но смысл делать попытку отдельного запроса и доставания целого объекта, чтобы потом просто считать его айди и передать в запрос на удаление?


А главное, если айди существует, то при его подмене будет просто удалён другой объект. Но с точки зрения текущей валидации это норма... Бред какой-то! Ну и ещё главное - софт работает в закрытом виде на территории предприятия, в интранете, и наружу доступа нет. Подменить нередактируемый айди могут лишь агенты госдепа работники, которые как-то взломали программу. Защита от такого взлома явно не этим тупым запросом с доставанием объекта делается. Остаётся одно - говно- и лапшекод, когда чел, его написавший, сам не понимал, что и зачем там происходит. Тут даже на самописный фреймворк не спишешь, т.к. даже по логике этого фреймворка написанный код делает какую-то лютую дичь.


Говоре же - гении делали. Там весь многосотстрочный говнокод можно на порядок ужать.

 

Перейти на