Скажем нет Boilerplate коду в Java!

Влад Скуришин
2 min readJan 26, 2018

--

И воспользуемся библиотекой Lombok.

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

Перчик чили — лого библиотеки Lombok

Так вот, встречайте Lombok (хотя его уже поздновато встречать, проект существует более 4 лет). Библиотека позволяет одним взмахом нескольких аннотаций заменить ваш boilerplate-код.

Пример POJO-класса

Мы создали класс Person с четырьмя параметрами. В принципе выглядит не так страшно, хоть и неприятно. Но представим ситуацию, прошел месяц и нам понадобилось добавить еще двадцать параметров. В результате вы получите класс, который будет больше данного в раз пять, а тут бизнес-логики минимум!

Что ж попробуем воспользоваться Lombok. Для этого удаляем конструктор и все геттеры. И добавляем две аннотации @Getter, @AllArgsConstructor. Объяснять что делает каждая аннотация думаю нет смысла, так как из названия все очевидно.

А что если я захочу добавить hashCode, equals, toString? И тут нам поможет Lombok! Всего две строчки кода:

И это еще не все прелести Lombok:

  • В Eclipse, IntelliJ Idea присутствуют плагины для работы с Lombok.
  • Простота подключения через Maven и другие инструменты сборки.
  • Поддержка других интересных фич: объявление final переменной с помощью val , создание билдеров, добавление логгера и т.д. Полный список: клац.

Но есть и свои минусы:

  • возможны проблемы с пониманием кода;
  • проблемы совместимости с Groovy;
  • некоторые аннотации могут быть понижены до статуса Experimental и вам как-то придется решать эту проблему;

Советую почитать информацию об опыте использования библиотеке: тут и тут.

Итого

Для своих мелких проектов я в обязательном порядке использую Lombok и он позволяет мне сохранить кучу времени. Но вы должны понимать и те проблемы, к которым может привести использование данной библиотеки. Поэтому хорошенько посоветуйтесь со своей командой перед тем как использовать Lombok.

--

--

No responses yet