В принципе, если не найденный объект не является фатальной ошибкой, возврат null не так страшен, главное, чтоб не false, 0, -1 и всякие прочие вариации. Однако я считаю это плохим тоном — стоит пропустить хотя бы одну такую проверку на null в коде аля
Some some = Some.get();
if (some != null) {}
и приложение упадет с NPE. В случае коллекций надо возвращать пустую, чтобы итерироваться по ней можно было вообще без проверок и это не приводило к фатальным последствиям. В случае одного эл-та по ID, к примеру, нужно каждый раз крепко задумываться. В некоторых книгах вместо null рекомендуют возвращать «объект особого случая».
нормальный результат, если метод возвращает null или false, когда ничего не найдено
Не уверен. Попытка найти что-то несуществующее, но очень нужное, к примеру, должна приводить к исключению, а не проверке типа (псевдокод): x = sample_db_query(…)
if (x != false) … else …
Вообще я за типизированные ответы, если от метода ожидается коллекция — пусть вернется либо пустая, либо исключение, если пустой там быть не может. Если вернуться должен ровно один объект — либо он сам, либо исключение.
Киньте соответствующее исключение, какие проблемы. Не ловите все подряд в catch, ловите только то, что сможете обработать, остальное оборачивайте и кидайте наверх. Правильность параметров не при чем, если возникла некая ошибка в работе.
Буквально недавно была цепочка примерно такая цепочка, не могу найти: Ошибка записи в сокет (или базу) — Ошибка IO — Ошибка связи с сервером платежей — Ошибка платежа — Ошибка сохранения заказа и т.д., т.е. вы имеете семантичные ошибки, у которых у каждой известно, что ее спровоцировало, и чем глубже — тем конкретнее. Естественно, управляющий код верхнего уровня, поймавший исключение, про самые низкие типы исключений ничего знать не должен.
if ( !empty(load::$path[0]) ) — антипаттерн Magic Numbers, как минимум надо писать load::isIndex()
На кой Вам определять OS когда есть константы PATH_SEPARATOR и DIRECTORY_SEPARATOR?
В принципе, если не найденный объект не является фатальной ошибкой, возврат null не так страшен, главное, чтоб не false, 0, -1 и всякие прочие вариации. Однако я считаю это плохим тоном — стоит пропустить хотя бы одну такую проверку на null в коде аля
и приложение упадет с NPE. В случае коллекций надо возвращать пустую, чтобы итерироваться по ней можно было вообще без проверок и это не приводило к фатальным последствиям. В случае одного эл-та по ID, к примеру, нужно каждый раз крепко задумываться. В некоторых книгах вместо null рекомендуют возвращать «объект особого случая».
Не уверен. Попытка найти что-то несуществующее, но очень нужное, к примеру, должна приводить к исключению, а не проверке типа (псевдокод):
x = sample_db_query(…)if (x != false) … else …
Вообще я за типизированные ответы, если от метода ожидается коллекция — пусть вернется либо пустая, либо исключение, если пустой там быть не может. Если вернуться должен ровно один объект — либо он сам, либо исключение.
Буквально недавно была цепочка примерно такая цепочка, не могу найти: Ошибка записи в сокет (или базу) — Ошибка IO — Ошибка связи с сервером платежей — Ошибка платежа — Ошибка сохранения заказа и т.д., т.е. вы имеете семантичные ошибки, у которых у каждой известно, что ее спровоцировало, и чем глубже — тем конкретнее. Естественно, управляющий код верхнего уровня, поймавший исключение, про самые низкие типы исключений ничего знать не должен.
if ( !empty(load::$path[0]) )— антипаттерн Magic Numbers, как минимум надо писать load::isIndex()На кой Вам определять OS когда есть константы PATH_SEPARATOR и DIRECTORY_SEPARATOR?