[英]Is there a naming convention for nested “const” JavaScript values?
如何將我們還是應該結轉Java或其他類似C外殼約定常量的JavaScript?
在Java中,我們將用ALL_UPPERCASE命名一個“常量”(靜態最終)成員。 如果我們有一組要用作常量的值,則可以使用一個枚舉成員,並用HumpBack名稱命名該枚舉成員 ,但單獨的枚舉應為UPPERCASE,例如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
有一個類似於嵌套的 “枚舉”的PLANET_ATTRIBUTES
。 我在這里使用大寫的“枚舉”名稱是因為它感覺像StarTrek.
之下的所有內容StarTrek.
本質上應該是“常量”(與Java中的枚舉實際上是Class相對,因此是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,為什么? 是否為此提出了任何約定?
第二個約定看起來更好(第一個約定向您大喊),並且也在C#中使用,但這取決於您! 我認為對此沒有限制。
但是關於javascript中的枚舉值:也許這樣會更好? 您可以將枚舉用作標志。
StarTrek.Species = {
HUMAN: 1,
KLINGON: 2,
VULCAN: 4
}
編輯:
正如Jason所說,在javascript中沒有任何常量的概念,因此它取決於您的選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.