当我使用哈希表/字典时,我有时会为如何指定键而苦恼。
例如:如果我创建一个简单的字典(本示例使用 Python),
foo = {'bar': 'baz', 'foobar': 'foobaz' }
我可以使用键值访问值(在其他模块中): ( foo['bar']
) 并baz
返回。
用邪恶博士的话来说,“非常标准,真的。”
不幸的是,使用静态字符串作为键将使用此 Dictionary 的任何模块与其实现紧密耦合。当然,这也适用于使用其他键类型(例如 Enums、Objects 等)时;无论如何,您将其切片,所有访问 Dictionary 的模块都需要知道键的值。
为了解决这个问题,我通常使用静态常量字符串值(或 Enums,如果在语言中可用)作为键,并将它们公开存储在本地类/模块中,或者存储在单独的模块/类中。因此,对字典键本身的任何更改都保存在一个位置。
这通常看起来像这样:
BAR_KEY = 'bar'
foo[BAR_KEY] = 'foobar'
是否有更好的方法来指定键,这样 Dictionary 的使用不一定将模块/类与其实现耦合?
注意:我在 SO 中看到了一些解决此问题的响应(例如property-to-reference-a-key-value-pair-in-a-dictionary),但这些主题似乎并没有专门解决这个问题。答案很有帮助,但我想要更广泛的经验。