2016-04-05 8 views
0

を定数に割り当てる数字は、私は私のアプリを持っている以下の定数を考えてみましょう:メンテナンス:

const Actions = { 
    SONGS_CHANGED: 0, 
    PREVIEW_TAG_CHANGES: 1, 
    END_PREVIEW: 2, 
    SAVE_TAGS: 3, 

    PATTERNS_UPDATED: 4, 
    PATTERN_MAPPED: 5, 
    PATTERN_UNMAPPED: 6, 

    CHANGE_NUMBER_OF_PARENT_DIRECTORIES: 7, 
} 

私はこれらが一緒にグループ化された維持しようとしています。しかし、それは最初のグループに1つ追加すると、その下のすべての番号を更新する必要があることを意味します。さて、明らかに私はにはを持っていません。私はいつもそれを次の高い番号に割り当てることができます(例えば、グループに関係なく次の定数に8の値を与えます)。しかし、定数の量が増えるにつれて、次のものが何であるべきかを知るために最も高い数値を特定することは難しくなります。

pythonでは、定数の数値を生成するのにrange()のようなものを使用すると、この問題は完全になくなります。 JavaScriptの優れたアプローチは何ですか?

+0

しかし、定数の量が増えると、これはどういう意味ですか? – gurvinder372

+0

@ gurvinder372時間が経つにつれ、要件が変更されたときにアプリケーションにさらに多くの定数を追加するようになります。 OPは関連する定数をグループ化したままにしたいが、番号を付け直すか、現在の最高の番号を覚えておく/見つけるのにかかるオーバーヘッドはありません。 –

+0

数値である必要がありますか? – nils

答えて

3

あなたが本当に定義された順に番号を付けるだけで、あなたがそうするようにインクリメント変数を使用することができますしたい場合:唯一の場所ならば、このやり方で定数を変更するだけで使用する必要があること

var x = 0; 
const Actions = { 
    SONGS_CHANGED: x++, 
    PREVIEW_TAG_CHANGES: x++, 
    END_PREVIEW: x++, 
    SAVE_TAGS: x++, 

    PATTERNS_UPDATED: x++, 
    PATTERN_MAPPED: x++, 
    PATTERN_UNMAPPED: x++, 

    CHANGE_NUMBER_OF_PARENT_DIRECTORIES: x++, 
} 
console.log(Actions.END_PREVIEW); //2 
console.log(Actions.SAVE_TAGS); //3 

注意をこれらの数値は定数を参照することによって使用されます。もし他の場所に保存していれば、それらを変更すると既存の保存されたデータが破壊されます。選択肢は、実行時に一定であるか、または永続的に一定であるかによって異なります。

2

あなたが知っている(または推測することができる)場合は先験的各グループはこれまでに、あなたは、このような数字の異なるサブレンジ使用することができますどのように大きな:ジェームズ・ソープのソリューションよりも優れた利点は、それが逆方向であるということです

const Actions = { 
    SONGS_CHANGED: 0, 
    PREVIEW_TAG_CHANGES: 1, 
    END_PREVIEW: 2, 
    SAVE_TAGS: 3, 

    PATTERNS_UPDATED: 10, 
    PATTERN_MAPPED: 11, 
    PATTERN_UNMAPPED: 12, 

    CHANGE_NUMBER_OF_PARENT_DIRECTORIES: 50, 
} 

をつまり以前に定義された値を変更することはありません。またはあなたの定数が取り得る値ものに応じて適していない可能性があり、それらは文字列であることができれば、例えば、あなたがGUIDベースのアプローチを使用することができ

+0

はい、別の良いアプローチです。私のやり方は、これらの数字が使われる唯一の場所が定数であれば、実際に使うべきです。数字以外の場所に格納されていれば、それはあなたを噛んで戻ってくるでしょう。その点でメモを追加しました... –

+0

これは素晴らしい代替ソリューションです。これは決して変化しない値が心配されていれば確かに行きます。 – maxedison

0

A全く異なるアプローチ:

const Actions = { 
    SONGS_CHANGED:      '4e6c355f-d684-4544-8320-529f20c89ce7', 
    PREVIEW_TAG_CHANGES:     '39a34b2b-0467-46f9-9d21-f407f89ae3c7', 
    END_PREVIEW:       '350e1d61-e6f9-4cc5-9364-bbdc14fd7063', 
    SAVE_TAGS:       '32e85a98-e13c-480c-9449-0a5bec7ec13c', 

    PATTERNS_UPDATED:     '16536175-e421-40d9-9d5d-962bcd0f0771', 
    PATTERN_MAPPED:      '0fd2bbd8-91f4-413b-8010-736bcacd1d88', 
    PATTERN_UNMAPPED:     'b946d566-d951-4695-a0ce-56b0bf987eb6', 

    CHANGE_NUMBER_OF_PARENT_DIRECTORIES: '5b0736f5-e5e9-48f3-a9a1-bed8d0882beb', 
} 

ます既存の値を変更することを心配することなく、または将来的にどれくらい多く必要になるかを知る必要がなくても、どこでも新しい定数を追加できます。 this online toolのように、GUIDを生成する方法はたくさんあります。