Мы с коллегами обсуждали логику в перечислениях. Лично я предпочитаю, чтобы не имели какую-либо логику в перечислениях Java (хотя Java предоставляет такую возможность) Обсуждение в этом случае было сосредоточено вокруг удобного метода внутри перечисления, возвращающего карту:
public enum PackageType {
Letter("01", "Letter"),
..
..
Tube("02", "Packaging Tube");
private String packageCode;
private String packageDescription;
..
..
public static Map<String, String> toMap() {
Map<String, String> map = new LinkedHashMap<String, String>();
for(PackageType packageType : PackageType.values()) {
map.put(packageType.getPackageCode(), packageType.getPackageDescription());
}
return map;
}
}
Мое личное предпочтение - вытащить это на службу. Аргумент в пользу наличия метода внутри перечисления сосредоточен вокруг удобства. Идея заключалась в том, что вам не нужно идти в сервис, чтобы получить его, но вы можете напрямую запросить перечисление.
Мой аргумент был сосредоточен на разделении интересов и абстрагировании любой логики от службы. Я не думал, что «удобство» было сильным аргументом, чтобы поместить этот метод в перечисление.
С точки зрения передового опыта, какой из них лучше? Или все сводится к личным предпочтениям и стилю кода?