Когда я работаю с хэш-таблицами / словарями, я иногда испытываю трудности с указанием ключей.
Например: если я создаю простой словарь (для этого примера используется Python),
foo = {'bar': 'baz', 'foobar': 'foobaz' }
Я могу получить доступ к значениям (в других модулях) с помощью ключевых значений: (* 1006 *) и получить baz
обратно.
По словам доктора Зла, "на самом деле довольно стандартно".
К сожалению, использование статических строк для ключей тесно связывает любые модули, использующие этот Словарь, с его реализацией. Конечно, это также может применяться при использовании других типов ключей (например, Enums, Objects и т. Д.); в любом случае, если вы нарежете его, все модули, которые обращаются к Словарю, должны знать значения ключей.
Чтобы решить эту проблему, я обычно использую строковые значения статических констант (или Enums, если они доступны на языке) для ключей и храню их публично в локальном классе / модуле или в отдельном модуле / классе. Поэтому любые изменения в самих словарных ключах хранятся в одном месте.
Обычно это выглядит так:
BAR_KEY = 'bar'
foo[BAR_KEY] = 'foobar'
Существуют ли более эффективные способы указания ключей, чтобы использование словаря не обязательно связывало модуль / класс с его реализацией?
Примечание: я видел несколько ответов в SO, которые касаются этого (например, свойство-ссылка-ключ-значение-пара-в-словаре ), но темы не Похоже, что этот вопрос не решен конкретно. Ответы были полезны, но я хотел бы получить более широкий опыт.