Почему возвращать null - это плохая практика:
1. Если метод может возвращать null, то вызывающий код обязан проверять на null полученные от метода данные. Иначе есть риск получить Null Pointer Exception при работе с этими данными. Это очень сильно загромождает код, обязуя проверить все данные на null каждый раз.
2. В разработке ПО всегда надо использовать FailFast подход, для раннего обнаружения ошибок. Если метод вернул null, а вызывающий код не проверяя передает его дальше, например кладет его в коллекцию или в поле другого объекта, то это бомба, которая взорвется в неожиданном месте, совершенно в другом куске кода, очень далеко от метода, который этот null вернул. Это нарушает FailFast подход и очень затрудняет поиск «виновника» из-за которого возник Null Pointer Exception.
А как методу сообщить о проблеме, не используя null.
1. Если ситуация не штатная - выбросить исключение (например objectNotFound).
2. Если ситуация нормальная, и нам может вернуться «ничто», то вместо null возвращайте Null-объект, который представляет собой некий объект, возвращаемый по умолчанию.
Null-объект наследуется от основного объекта, в обоих классах создается метод isNull(), который будет возвращать true для Null-объекта и false для реального класса. Там где требуется, проверяем object.isNull().
3. Возвращать Optional вместо null, этот тип указывает на возможный возврат пустого значения. Наличие Optional в сигнатуре метода четко указывает на необходимость проверки на пустое значение.
4. Если все же по какой-то причине метод возвращает null, об этом следует предупредить клиентов метода, например добавив в сигнатуру аннотацию @Nullable.
#программирование #java #java для новичков #java для чайников