BonBonSlick
@BonBonSlick
Vanilla Full Stack Web Architector

Как избежать проверки на NULL без ексепшенов и if?

Заметил что в огромных проектах слишком много NULL значение, что создает дополнительную логику на проверку,
если забыл проверить вылетает NullPointerException и другие. Можно выкидывать ексепшен, однако его не всегда можно пропсать к примеру когда используем библиотеку, или апишку и тому подобное.

Как максимально минимизировать ошибка из-за NULL и правильно обробатывать такие случаи?

Ексепшены все равно что проверку прописать, ведь ексепшены надо хендлить а иначе они могут сломать приложение на клиенте. А если по дефолту садить 0 для int, '' для string и [] или new Collection() надо проверять на пустоту, длину или величину.
  • Вопрос задан
  • 286 просмотров
Решения вопроса 1
Frostealth
@Frostealth
PHP Developer
Серебряной пули от этого нет. Нужно рассматривать различные случаи в отдельности. А примеры, к сожалению, вы не предоставили.

Где-то можно избавиться от null нейтральным значением или поведением: 0 для чисел, '' для строк, [] или Collection::empty() для коллекции/массива, NullObject для объектов.

Можно выкидывать ексепшен, однако его не всегда можно пропсать к примеру когда используем библиотеку, или апишку и тому подобное.

Тут может помочь какая-нибудь обертка над либой.

P.S. Использование null с последующими проверками может быть вполне оправданно в определенных ситуациях и кейсах.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега PHP
Web developer
Проверять надо данные от юзера. Например, по id поднять объект, проверить, что он есть, проверить права на него. Во всех нормальных фреймворках эти все проверки можно уместить в одну строчку. Если что не так - "not found" или "access denied".

Во всех внутренностях проверять данные не надо, ибо самому себе все-таки надо верить. Если где накосячил - и так будет ошибка в логе.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SaveTime Москва
от 100 000 руб.
Teamlead Ставрополь
от 25 000 до 50 000 руб.
от 60 000 до 80 000 руб.
19 нояб. 2019, в 16:48
500 руб./за проект
19 нояб. 2019, в 15:25
3500 руб./за проект