我们或
在Java中,我们将使用ALL_UPPERCASE命名一个“常量”(静态最终)成员。如果我们有一组我们想要的值作为常量,我们可以使用枚举成员和we'd name the enum member with a HumpBack name,但是单独的枚举将是大写的,例如SomeClass.SomeEnum.SOME_VALUE
。
让我们说我有一个用于一些星际迷航游戏的JavaScript库(选择一个愚蠢的例子),带有一个根命名空间对象StarTrek
。我有一些常数值(更不用说Js没有常数)我想为外星物种,行星的属性建立。在不考虑Java约定的情况下,我会选择以下内容:
StarTrek.SPECIES = {
HUMAN: "HUMAN",
KLINGON: "KLINGON",
VULCAN: "VULCAN"
};
StarTrek.PLANET_ATTRIBUTE = {
CLASS: {
M: "M",
T: "T",
...
},
LIFE_FORMS: {
NONE: "NONE",
INTELLIGENT: "INTELLIGENT",
NO_INTELLIGENT: "NO_INTELLIGENT"
}
};
请注意,与Java不同,我们在PLANET_ATTRIBUTES
中有类似嵌套“枚举”的内容。我在这里找到了大写的“枚举”名称,因为它感觉下面StarTrek.
以下的所有内容基本上都应该是“常量”(在Java中,枚举实际上是一个类,因此是BumpyCase名称)。所以无论如何我可以通过使用StarTrek.PLANET_ATTRIBUTE.LIFE_FORMS.NO_INTELLIGENT
指定没有智能生命形式的地方。
现在,按照Java的惯例,我会选择以下内容:
StarTrek.Species = {
HUMAN: "HUMAN",
KLINGON: "KLINGON",
VULCAN: "VULCAN"
};
StarTrek.PlanetAttribute = {
Class: {
M: "M",
T: "T",
...
},
LifeForms: {
NONE: "NONE",
INTELLIGENT: "INTELLIGENT",
UNINTELLIGENT: "UNINTELLIGENT"
}
};
在这种情况下,我会使用StarTrek.PlanetAttribute.LifeForms.NO_INTELLIGENT
指定那里没有智能生命形式。
哪种适合JavaScript更好?为什么?是否有为此提出的任何公约?
答案 0 :(得分:0)
第二个约定看起来更好(第一个对你大喊大叫)并且也在C#中使用,但这取决于你!我认为对此没有任何限制。
但关于javascript中的枚举值:也许这会更好?您可以将枚举用作标记。
StarTrek.Species = {
HUMAN: 1,
KLINGON: 2,
VULCAN: 4
}
修改强>
正如Jason所说,在javascript中没有任何常量的概念,所以这取决于你的选择。