null в репозиториях. Некоторые считают нормальным, когда сущность не найдена, бросать исключение в репозитории. Является ли такой подход имеющим право на жизнь или это бред?
Ну если отсутствие чего-то в репозитории это не исключительная ситуация то норм, тут как бы нет особо разницы. Важно разобраться почему что-то может отсутствовать
На мой взгляд бредовая статья
Ну потому что в одном случае бросается исключение, а в другом null возвращается. Это не прозрачно так делать. Я захожу в репозиторий вижу, в одном случае бросается исключения, а в другом возвращается нулл. Как я должен догадываться почему так сделано
Кидайте исключение из методов get(id) и возвращайте null из find(id). Тогда будет везде однообразно и понятно.
С этим согласен, а что думаете о статье выше?
А так это зависит ещё и от возможностей и соглашений в конкретном языке программирования, как я приводил пример в https://t.me/phpyhtelka/115234
Где-то тихо плачет монада мейби …
Как дети малые всю заразу с пола в рот тащут😅
Тащить заразу с пола — обмазываться наллами и строить контрол флоу на экзепшнах
а в чем опасность контрол флоу на эксепшенах? Если это например высокоуровневое описание бизнес-процесса, то вполне наглядно выражаются переходы к альтернативным кейсам через обработку исключений. Но в целом согласен, что штука специфическая и куда попало не влезет
В том что эксепшены — это goto
Это повышенные накладные расходы
вообще-то наоборот. Выбор и обработка исключения относительно дорогие да. Но эта цена платится только в случае ошибки, тогда как альтернативные методы отрабатывают всегда.
нет, использовать их в этом качестве - плохо, а в целом механизм полезный
Вопрос в том, что перекладывать бизнес-логику на эксепшн и делать обработку невалидных данных - не одно и то же.
Бросание исключения не означает ошибку или нештатку в ооп в принципе. Мы так делали - делали свой набор исключений для разных кейсов. Если ломает смотреть чьих instanceof будет можно базовый класс сделать и в объекте исключения Поле типа enum с кодом ситуации отдавать.
"исключение" - исключительная ситуация - оно не означает "ошибку" - ошибка более широкое понятие. исключение это "не могу продолжить выполнение операции".
Бывает ООП без исключений. И исключения потому так и называются, что должны быть редкой ситуацией.
Обсуждают сегодня