Проект Lombok против Eclipse шаблоны / генерация кода - PullRequest
13 голосов
/ 11 апреля 2010

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

Ответы [ 5 ]

21 голосов
/ 11 апреля 2010

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

12 голосов
/ 11 апреля 2010

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

6 голосов
/ 03 ноября 2010

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

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

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

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

  • Нет необходимости генерировать / удалять код при изменении полей (геттеры, сеттеры, toString, хэш, равно)
  • Нет помех для методов, закодированных вручную: просто добавьте свой собственный установщик в класс, где это необходимо. Ломбок пропускает это и генерирует все остальное

Недостатки:

  • Без рефакторинга имени: пока переименование value выше не приведет (пока) к переименованию getValue() и setValue()
  • Может слегка замедлить затмение
  • toString вывод не такой приятный, как, например, ToStringBuilder из Apache Commons
4 голосов
/ 11 апреля 2010

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

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

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

0 голосов
/ 11 февраля 2015

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

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