簡體   English   中英

嵌套的“ const” JavaScript值是否有命名約定?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM