Шаблоны/генерация кода проекта Lombok против Eclipse

Предлагает ли Project Lombok преимущества по сравнению с шаблонами кода/генерации кода в Eclipse? Есть ли недостатки (помимо включения .jar)?

Ответы

Ответ 1

Одно из преимуществ Lombok заключается в том, что после аннотирования класса, например, с аннотацией @Data, вам не нужно восстанавливать код при внесении изменений. Например, если вы добавите новое поле, @Data будет автоматически включать это поле в методы equals, hashCode и toString. Вам нужно вручную внести это изменение при использовании методов, созданных Eclipse. Некоторое время вы можете предпочесть ручное управление, но в большинстве случаев я этого не ожидаю.

Ответ 2

Преимущество Lombok заключается в том, что код на самом деле там нет - то есть классы гораздо читабельны и не загромождают.

Ответ 3

Преимущества:

  • Очень прост в использовании
  • Классы намного чище ( "нет кода шаблона" ), особенно "внутренние" структуры, подобные структуре, уменьшаются до минимума:

    @Data private class AttrValue { private String attribute; private MyType value; }

    Это создаст как getters, так и seters, toString() и правильные методы hash()/equals(), включая обе переменные. Вариант с @Value создает неизменяемую структуру (нет сеттеров, все поля окончательные).

  • Не нужно создавать/удалять код при изменении полей (getters, seters, toString, hash, equals)
  • Отсутствие помех в методах с ручным кодированием: просто добавьте свой собственный установщик в класс, где это необходимо. Lombok пропускает это и генерирует все остальное

Недостатки:

  • Нет рефакторинга имен, но: переименование value выше не будет (пока) переименовать getValue() и setValue()
  • Может немного замедляться.
  • toString вывод не так хорош, как, например, ToStringBuilder из apache commons

Ответ 4

Очень немногие приходят на ум:

  • он основан на аннотации, поэтому ничего хорошего для устаревшего проекта все еще в пред-Java5 (delombok может помочь). Фактически, для этого требуется использовать компилятор javac v1.6.
  • он все еще имеет ограничения относительно нескольких конструкторов

Проблема с зависимостью не стоит забывать, но вы исключили ее из своего вопроса.

Ответ 5

Eclipse EMF предлагает некоторые функции, которые очень удобны, которые Lombock еще не поддерживает:

  • Мощные механизмы уведомления, чтобы получать информацию об изменениях в ваших экземплярах.
  • Общий API без отражения java. Доступ и изменение экземпляров без сильной ссылки на тип
  • Редактирование на основе команд и API
  • Перекрестные ссылки между моделями: создавать и загружать деревья моделей, а EMF обрабатывает загрузку, создавая прокси для перекрестной ссылки. Это экономит память и повышает производительность в огромных деревьях домена.
  • И многое другое.