Независимо от того, какого стиля вы придерживаетесь, вы должны его придерживаться. Неважно, сколько пробелов вы используете для идентификации, просто будьте последовательны. Импорт пакетов в определенном порядке? Без проблем. Быть последовательным. Помните, что весь смысл стиля заключается в том, чтобы ваш код выглядел аккуратно и легко читался. Большинство IDE даже позволяют вам импортировать/экспортировать конфигурацию вашего стиля. Неплохая идея проверить это под контролем источника.

2. Меньше значит больше

Используйте такие инструменты, как ломбок, чтобы не писать шаблонный код. Lombok может избавить вас от необходимости писать геттеры/сеттеры для каждого поля, объявлять конструкторы, генерировать методы toString, hashCode и equals среди других полезных вещей.

По сути превращая это чудовище

в это

3. Назовите свое состояние

Обновите свои условия «если» с помощью предикатов. Предикаты не только улучшают читаемость, но и расширяют возможности повторного использования. Если вы обнаружите, что одно и то же «условие» повторяется в нескольких местах вашего кода, подумайте о том, чтобы выделить его как предикат и дать ему разумное имя. Тем самым вы также задокументировали свое состояние.

Рефакторинг этого

Использование предиката

4. Используйте свободный API

Если вы не знакомы со стилем построения интерфейсов Fluent API, я настоятельно рекомендую следующий блог Мартина Фаулера, который популяризировал эту концепцию. В двух словах, Fluent API включает в себя улучшение удобочитаемости за счет цепочки методов.

Fluent API действительно эффективен при создании и настройке объектов. Тем не менее, я не видел, чтобы его много использовали.

Совет. Используйте аннотацию @Builder, предоставленную lombok, для создания Builder/Fluent API для вашего класса.

5. Избегайте двойного отрицания

Как и в английском языке, двойное отрицание трудно понять.

Избегайте этого

В пользу

6. Избегайте глубокой вложенности

Как правило, очень сложно следить за кодом, скрытым под вложенными условиями if и/или лямбда-функциями.

Вообще говоря, следует избегать вложенности глубиной более 2. Приведенный выше фрагмент кода можно реорганизовать как

7. Вернуть необязательное значение вместо нулевого

Методы, которые возвращают нулевые значения, требуют особого внимания, поскольку вы должны учитывать проверки нулевых значений или оставлять свой код уязвимым для NullPointerException. Используя Optional, вы явно указываете вызывающей стороне, что метод может возвращать пустое (нулевое) значение и, следовательно, должен его обрабатывать.

С дополнительным

8. Используйте MultiCatch

Предпочитайте multi catch нескольким блокам catch.

Рефакторинг этого

С MultiCatch

9. Правило четырех параметров

Трудно следовать методу, принимающему большое количество параметров. Почти всегда есть потенциал для рефакторинга. Какой хороший предел для передаваемых параметров? Я предпочитаю придерживаться 4. Все, что больше 4, следует подвергнуть рефакторингу.

  • Разбейте метод на более мелкие методы, чтобы вам не нужно было передавать так много параметров.
  • Используйте шаблон Builder для создания объекта, состоящего из параметров, которые необходимо передать.
  • Если вам все же необходимо, рассмотрите возможность форматирования кода таким образом, чтобы каждый параметр находился в отдельной строке.

10. Комментарии — это хорошо, но не злоупотребляйте ими

Комментарии, как правило, хороши для того, чтобы документировать сложный фрагмент кода. Он сообщает читателю именно то, что ему нужно знать, не вдаваясь в программный поток. Однако старайтесь не злоупотреблять ими.

Не используйте комментарии там, где имя метода само по себе может сделать работу.

Обязательно добавляйте комментарий, если делаете что-то странное/нетрадиционное/другое. Если есть возможность, постарайтесь обосновать в комментариях.

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

Так что используйте их, но используйте с умом!!

Спасибо, что прочитали это сообщение. Надеюсь, вам понравится, и следите за обновлениями!!

Первоначально опубликовано на https://www.linkedin.com.