Нажмите "Enter" для перехода к содержанию

Правильный код правила хорошего тона начинающего программиста

0

Этот кусок кода вызвал сбой в одном из мобильных приложений. Чтобы найти источник проблем, специалисты “набросали” исключений и пытались отловить баг. В процессе работы программа получала ответ от сервера “OK” и на запрос возвращала пустой ответ.

Если бы разработчики сразу позаботились о блоках try-catch, то API могло выдать exception, и проблема была бы сразу решена.

Бывают разные ситуации, в которых вернется пустой объект после ожидаемого exception . Пустыми объектами в Java могут быть Optional.empty(), null или пустой список. Чаще всего это происходит во время парсинга URL. Перед тем, как вернуть null, если полученная ссылка не парсится стандартными методами, нужно найти в коде или источнике причину ее неправильного формирования.

Пустые объекты – это плохо, и лучше их не использовать. Если вам что-то показалось подозрительным, необходимо создать исключение.

Это очень частая проблема новичков, а для примера приведем кусок кода:

Данный код яркий представитель Stringly typed программирования. Это такой процесс программирования, в котором разработчик очень часто использует строковые значения переменных, когда есть более логичная альтернатива.

Использование строгой типизации дает разработчикам возможность защититься от горы ошибок. Именно по этой причине большинство современных программистов переходят на типизированные языки, такие как Java.

Существует много источников, откуда берутся Stringly types, вот некоторые из них:

  • различные запросы и HTTP-ссылки;
  • JSON;
  • БД без поддержки enums;
  • не валидные дополнения.

Чтобы избежать чрезмерного употребления строковых значений в любом из перечисленных случаев, рекомендуем парсить строки и применять сериализацию “по краям” кода. Вот пример:

Такой подход приведет к тому, что измененная информация сразу даст о себе знать, программа известит о сбое до каких-либо серьезных последствий, и не придется ловить exception по всему коду после единственной валидации данных.

Самое долгожданное изменение, которого все так давно ждали в Java, – это класс Optionals, значительно облегчающий обработку исключений типа NullPointerException (NPE), которое обычно приводит к самым большим неприятностям, многочасовому дебаггингу и дорогостоящим простоям.

Optionals подключают в правильный код с целью полного исключения появления NPE в коде, при условии правильного использования.

Приведем правила применения Optionals в своем проекте:

  • Не нужно вызывать .get() каждый раз, когда необходимо задействовать Optionals.
  • Если проект все еще не имеет дефолтного значения, то методы .map() и .flatMap() позволят временно выступить в этой роли.
  • Если подключаемое расширение возвращает null, то оберните код при помощи Optional.ofNullable().
  • Используйте Optional как возвращаемый параметр метода.

Если писать правильный код, то желательно избегать методов, указанных в примере ниже:

Все описанные методы используют объекты-оболочки, такие как Optional, List или Task. Куда более недопустимо, если возвращаемое значение того же типа (т. е. метод принимает и возвращает Optional). Рассмотрим несколько примеров:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *