ハッシュ テーブル/辞書を使用しているとき、キーの指定方法に苦労することがあります。
例: 簡単な辞書を作成すると (この例では Python を使用)、
foo = {'bar': 'baz', 'foobar': 'foobaz' }
キー値 ( foo['bar']
) を使用して (他のモジュールの) 値にアクセスし、baz
戻ることができます。
Dr. Evil の言葉を借りれば、「かなり標準的です」。
残念ながら、キーに静的文字列を使用すると、この Dictionary を使用するすべてのモジュールがその実装に密接に結合されます。もちろん、これは他のキー タイプ (Enum、Object など) を使用する場合にも適用できます。いずれにせよ、ディクショナリにアクセスするすべてのモジュールは、キーの値を知る必要があります。
これを解決するために、私は通常、キーに静的な定数文字列値 (言語で使用可能な場合は列挙型) を使用し、それらをローカル クラス/モジュールにパブリックに格納するか、別のモジュール/クラスに格納します。したがって、ディクショナリ キー自体への変更は 1 つの場所に保持されます。
これは通常、次のようになります。
BAR_KEY = 'bar'
foo[BAR_KEY] = 'foobar'
ディクショナリの使用が必ずしもモジュール/クラスをその実装に結合しないように、キーを指定するより良い方法はありますか?
注: SO でこれに対処するいくつかの応答を見てきました (例: property-to-reference-a-key-value-pair-in-a-dictionary ) が、トピックはこの問題に具体的に対処していないようです。回答は参考になりましたが、もっと幅広い経験が欲しいです。