Шаблоны/генерация кода проекта 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 обрабатывает загрузку, создавая прокси для перекрестной ссылки. Это экономит память и повышает производительность в огромных деревьях домена.
- И многое другое.