280 java standards coding-style
是否存在在Java中命名枚举的约定?
我的偏好是枚举是一种类型.所以,例如,你有一个枚举
Fruit{Apple,Orange,Banana,Pear, ... }
NetworkConnectionType{LAN,Data_3g,Data_4g, ... }
Run Code Online (Sandbox Code Playgroud)
我反对命名它:
FruitEnum
NetworkConnectionTypeEnum
Run Code Online (Sandbox Code Playgroud)
我知道很容易找出哪些文件是枚举,但是你也可以:
NetworkConnectionClass
FruitClass
Run Code Online (Sandbox Code Playgroud)
另外,是否有一个好的文档描述了常量,在哪里声明它们等等?
DJC*_*rth 452
枚举是类,应遵循类的约定.枚举的实例是常量,应遵循常量的约定.所以
enum Fruit {APPLE, ORANGE, BANANA, PEAR};
Run Code Online (Sandbox Code Playgroud)
没有理由比FruitClass更多地编写FruitEnum.你只是在浪费四个(或五个)字符而不添加任何信息.
Java本身推荐这种方法,并在它们的示例中使用它.
Sta*_*Log 76
这可能不会让我成为很多新朋友,但应该补充说C#人有不同的指导方针:枚举实例是"Pascal case"(大小写混合).请参阅stackoverflow讨论和MSDN枚举类型命名准则.
当我们与C#系统交换数据时,我很想完全复制它们的枚举,而忽略了Java的"常量具有大写名称"约定.考虑到这一点,我没有看到枚举实例限制为大写的重要性.出于某些目的,.name()是获取枚举常量的可读表示的便捷快捷方式,并且混合大小写的名称看起来更好.
所以,是的,我敢于质疑Java枚举命名约定的价值."编程世界的另一半"确实使用了不同的风格这一事实让我觉得怀疑我们自己的宗教是合法的.
beo*_*ign 22
如前所述,根据Oracle网站上的文档(http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html),枚举实例应为大写.
但是,在查看Oracle网站(http://www.oracle.com/technetwork/java/javaee/downloads/index.html)上的JavaEE7教程时,我偶然发现了"杜克的书店"教程和课堂(tutorial\examples\case-studies\dukes-bookstore\src\main\java\javaeetutorial\dukesbookstore\components\AreaComponent.java
),我发现以下枚举定义:
private enum PropertyKeys {
alt, coords, shape, targetImage;
}
Run Code Online (Sandbox Code Playgroud)
根据惯例,它应该看起来像:
public enum PropertyKeys {
ALT("alt"), COORDS("coords"), SHAPE("shape"), TARGET_IMAGE("targetImage");
private final String val;
private PropertyKeys(String val) {
this.val = val;
}
@Override
public String toString() {
return val;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,即便是甲骨文公司的人也有时会以方便的方式进行交易.
Jim*_*m B 13
在我们的代码库中; 我们通常在它们所属的类中声明枚举.
所以对于你的Fruit例子,我们会有一个Fruit类,在里面有一个名为Fruits的Enum.
在代码中引用它看起来像这样: Fruit.Fruits.Apple, Fruit.Fruits.Pear
等等
常量沿着同一行,它们要么在它们相关的类中定义(所以类似Fruit.ORANGE_BUSHEL_SIZE
); 或者,如果它们在名为"ConstantManager"(或等效的;类似ConstantManager.NULL_INT
)的类中应用系统范围(即ints的等效"null值" ).(旁注;我们所有常量都是大写)
与往常一样,您的编码标准可能与我的不同; 所以YMMV.
它们仍然是类型,所以我总是使用我用于类的相同命名约定.
我绝对不赞成将"Class"或"Enum"放在一个名字中.如果你同时拥有一个FruitClass
和一个FruitEnum
其他东西是错误的,你需要更多的描述性名称.我试图考虑导致需要两者的代码类型,似乎应该有一个Fruit
带有子类型而不是枚举的基类.(这只是我自己的猜测,你可能会遇到与我想象的情况不同的情况.)
我可以找到命名常量的最佳参考来自变量教程:
如果您选择的名称只包含一个单词,则以全小写字母拼写该单词.如果它由多个单词组成,则将每个后续单词的首字母大写.名称gearRatio和currentGear是此约定的主要示例.如果变量存储常量值,例如static final int NUM_GEARS = 6,则约定会略有变化,将每个字母大写并用后缀字符分隔后续单词.按照惯例,下划线字符从未在别处使用过.
归档时间: |
|
查看次数: |
190500 次 |
最近记录: |