Re[5]: обработка ошибок
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 08.04.22 07:04
Оценка: +2
Здравствуйте, MadHuman, Вы писали:

MH>


MH>тем что, логика проверки аргумента arg1 довольно сложна (это не одна строчка для if как в упрощённом примере) и специфична именно для GetThing, и там уже реализована, тк функция используется не только для хандлера рест-апи ендпойнта.

Что мешает просто в отдельный метод вынести? Или даже в отдельный класс?
Я так понимаю, что основной это "уже там реализована",но это аргумент слабый, так как с современными средствами рефакторинга перемещение кода довольно простое, а других положительных эффектов нет


MH>в предлагаемом вами варианте логика проверки перенесена из GetThing в ProcApiRequest. это было бы ок, если она совсем простая, но она не совсем простая.

Это неважно, рефакторинг extract method выполняется легко.

MH>проверка внутри GetThing органична и реюзает часть внутренней логики. не так просто её взять и перенести.

Это ограничение, которое ты сам себе создал. Кроме того непонятно почему такая нетривиальная логика кидает в итоге ArgumentException, который по сути usage, а не runtime exception.

MH>и минус — в GetThing проверка всё равно нужно, т.к. GetThing не только для ProcApiRequest.

Вовсе не факт. У тебя в каждом методе АПИ своя валидация.

Чтобы руками не дублировать во пользуйся model binding и встроенной валидацией

MH>можно вынести логику валидации в отдельную функцию и реюзать и в GetThing и в ProcApiRequest, так будет уже лучше.

MH>но было ощущение что кэтчем эксепшина из GetThing тоже норм.
MH>не всегда хорошо чтоб каждое место использование функции вынуждало её менять/рефакторить.
А какая разница где код править, в котроллере или GetThing?

Если сценарий использования меняется, тоти сама функция меняется. Это называется "проектирование сверху вниз"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.