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

2
10609
Добавить в избранное

Прежде чем начать писать правильный код, должно пройти немало времени. Вот правила, которые помогут изменить к лучшему качество кода.

Правило №1: в любой непонятной ситуации выбрасывайте исключение

thrown exceptions

Приведем пример:

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

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

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

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

Правило №2: используйте строгую типизацию

Строгая типизация

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

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

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

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

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

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

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

Правило №3: используйте Optionals вместо null

Правильный код

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

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

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

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

Правило №4: применяйте “unlift” везде, где возможно

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

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

  1. Promise<A> method(Promise<B> param) – не такой гибкий, как having.
  2. A method(B param)

Если у вас в коде есть Promise<B>, то воспользуйтесь первым вариантом или вторым при помощи “lifting” функции .map (например, promise.map(method)).

Оригинал

Другие материалы по теме:

Ищете с чего начать?

Подпишитесь на нашу рассылку, чтобы получать больше интересных материалов:

И не беспокойтесь, мы тоже не любим спам. Отписаться можно в любое время.