编码约定 - 命名枚举

在 Java 中是否有命名枚举的约定?

我的偏好是枚举是一种类型。因此,例如,您有一个枚举

Fruit{Apple,Orange,Banana,Pear, ... }

NetworkConnectionType{LAN,Data_3g,Data_4g, ... }

我反对命名它:

FruitEnum
NetworkConnectionTypeEnum

我知道很容易挑选出哪些文件是枚举,但这样你也会有:

NetworkConnectionClass
FruitClass

另外,有没有一个很好的文档来描述常量的相同内容,在哪里声明它们,等等?


答案 1

枚举是类,应遵循类的约定。枚举的实例是常量,应遵循常量的约定。所以

enum Fruit {APPLE, ORANGE, BANANA, PEAR};

没有理由写比.你只是在浪费四个(或五个)字符,不添加任何信息。FruitEnumFruitClass

此方法由 Java™ 教程本身的示例推荐并在其中使用。


答案 2

这可能不会让我成为很多新朋友,但应该补充的是,C#人有不同的指导方针:枚举实例是“Pascal大小写”(大写/小写混合)。请参阅堆栈溢出讨论MSDN 枚举类型命名准则

当我们与C#系统交换数据时,我很想完全复制它们的枚举,而忽略了Java的“常量具有大写名称”约定。仔细想想,我认为将枚举实例限制为大写没有多大价值。出于某些目的,.name() 是获取枚举常量的可读表示形式的便捷快捷方式,混合大小写名称看起来会更好。

所以,是的,我敢质疑Java枚举命名约定的价值。事实上,“编程世界的另一半”确实使用了不同的风格,这让我认为怀疑我们自己的宗教是合理的。