在Java中有命名枚举的约定吗?
我的偏好是枚举是一种类型。例如,你有一个枚举
Fruit{Apple,Orange,Banana,Pear, ... }
NetworkConnectionType{LAN,Data_3g,Data_4g, ... }
我反对将其命名为:
FruitEnum
NetworkConnectionTypeEnum
我知道这很容易挑选出哪些文件是枚举,但你也会有:
NetworkConnectionClass
FruitClass
此外,是否有一个好的文档描述相同的常量,在哪里声明它们,等等?
它们仍然是类型,所以我总是使用与类相同的命名约定。
我绝对不赞成在名字中加入“Class”或“Enum”。如果你同时有一个FruitClass和一个FruitEnum,那么就有问题了,你需要更多描述性的名字。我试图思考那种会导致两者都需要的代码,似乎应该有一个带有子类型的Fruit基类,而不是枚举。(不过这只是我自己的猜测,你的情况可能和我想象的不一样。)
我能找到的命名常量的最好参考来自Variables教程:
If the name you choose consists of only one word, spell that word in all lowercase letters. If it consists of more than one word, capitalize the first letter of each subsequent word. The names gearRatio and currentGear are prime examples of this convention. If your variable stores a constant value, such as static final int NUM_GEARS = 6, the convention changes slightly, capitalizing every letter and separating subsequent words with the underscore character. By convention, the underscore character is never used elsewhere.
在我们的代码库中;我们通常在枚举所属的类中声明枚举。
对于你的Fruit例子,我们会有一个Fruit类,里面有一个Enum叫做Fruits。
在代码中引用它是这样的:Fruit.Fruits。苹果,Fruit.Fruits。梨,等等。
常量遵循同样的原则,它们要么在与之相关的类中定义(比如Fruit.ORANGE_BUSHEL_SIZE);或者在名为“ConstantManager”的类中应用系统范围(即int的等效“空值”)(或等效;如ConstantManager.NULL_INT)。(注;所有常量都是大写的)
与往常一样,您的编码标准可能与我的不同;所以YMMV。