Java Lombok - лучшая практика? - PullRequest
0 голосов
/ 15 мая 2019

Я унаследовал класс со следующими аннотациями Lombok:

@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString
@EqualsAndHashCode
public class PricingAndCosting {

//variables and constants

}

лучше практиковать следующее, чтобы получить ту же функциональность:

@Entity
@Data
public class PricingAndCosting {

//variables and constants

}

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Класс, который вы унаследовали, находится всего в 1 шаге от полного открытия снаружи (для этого потребуется заполнить поля public), что потенциально плохо, так как при использовании этого класса могут скрываться лишь несколько ошибок.Даже если класс используется разумным образом, вы не можете гарантировать его в будущем, если не закроете его немного.

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

Скорее всего, это также нарушает контракт equals и hashcode (они должны быть рассчитаны с использованием одного и того же набора неизменяемых полей - очень грубое правило, которое имеет смысл при использовании ломбоков, но, очевидно,подробнее).

Сначала я определил бы использование этого класса и выяснил, может ли он быть подвергнут рефакторингу в нечто более близкое к неизменяемому.

0 голосов
/ 15 мая 2019

Краткий ответ, это зависит.В общем, длинный ответ: Lombok генерирует код для вас, чтобы избежать шаблонного кода, однако вы должны знать, что вам действительно нужно использовать?Предположим, вам нужны только геттеры, тогда используйте @Getter.

Более того, иногда это действительно полезно для вас;то, что часто используется, например, шаблон Builder , может быть предложено вам только с одной аннотацией, а также создание исключения - еще одна необычная функция, и многое другое.Вы можете проверить это, чтобы увидеть хороший пример https://www.baeldung.com/intro-to-project-lombok

Как эффективность кода; кажется, что использование небольшого кода с @ Data будет лучше,но на самом деле это не так!Вы потребляете ресурсы, которые вам могут не понадобиться.Поэтому старайтесь использовать то, что вам действительно нужно, это хорошая практика.

...