我和我的同事正在讨论枚举中的逻辑.我个人的偏好是在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;
}
}
Run Code Online (Sandbox Code Playgroud)
我个人的偏好是将其推广到服务中.在enum中使用方法的论据集中在便利性上.这个想法是你不必去服务获得它,但可以直接查询枚举.
我的论点集中在关注的分离和将任何类型的逻辑抽象为服务.我不认为"方便"是将这种方法置于枚举中的有力论据.
从最佳实践的角度来看,哪一个更好?或者它只是归结为个人偏好和代码风格?
Zac*_*ght 14
好吧,我以前做过这个,但这并不意味着它是'最好'的事情.
但是,从我的角度来看,我更倾向于在枚举上使用该逻辑,因为您不会将'toString'方法移出到服务中.逻辑只涉及枚举本身及其自身的表示.
我认为将这样的方法转移到服务上会产生误导 - 通过将它放在枚举上,你可以预先知道enum有一个'toMap'方法.一个不了解服务但只是看着枚举的人可能不知道.
它还有助于在IDE中自动完成 - 我可以点击'.' 键并立即查看对象提供的方法.