一个好的查找表/哈希表的命名规范是什么?

9
在数据处理中,我经常需要创建一个查找数据结构来将一个标识符映射到另一个标识符。以具体的例子为例,让我们来看一下一个包含国家两个字符代码和全名之间1对1映射的结构。在其中,我们会有:
AD -> Andorra   
AE -> United Arab Emirates  
AF -> Afghanistan

这个map变量应该取什么好名字呢?以下是一些建议(我将使用驼峰式命名):

countryNameByCode
nameByCodeLookup
nameCodeLookup
codeToName
8个回答

10

在这种情况下,我的建议是使用codeToName,我认为这个建议是通用的。这并不意味着在所有情况下我都会选择这个名称;这取决于范围、进一步的封装等因素。但这个名称感觉很好,应该有助于使您的代码更易读:

String country = codeToName["SV"];

看起来相当不错,任何人都应该很容易理解。可能需要将“代码”一词更改为更精确的内容(“国家代码”是我下一个选择)。


6
country_name = countries_by_code[country_code]

它通过了“电话口述”测试,同时听起来更像自然语言。

3

我喜欢在集合中使用复数形式。

countryNames

编辑:countryCodes是错误的,因为您正在从代码映射到名称。

0

使用发音正确的名称。这也意味着适当地命名您的关键变量。例如:

countryName = countries[countryCode];

这很有道理 - 你给countries一个countryCode,它返回一个countryName。这将是多余的:
countryName = countryCodesToNames[countryCode];

0
我通常这样做:
countryCodeMappingByName 或者如果映射是唯一的,只需简单地:
countryCodeMapping

真的吗?我无法想象每次使用那个哈希映射表都要输入那么多字。 - Claudiu
我知道这个变量名有点长,但它不会引起歧义,我认为这很重要... - RWendi

0
在C#中,我会称呼这种类型为CountryCodeToNameMapping。通常我会将变量称为countryCodeToNameMapping,但在某些非常受限制的上下文(例如lambda),我可能会将其称为cm

0

我会选择

countryName = countryByCode["DE"]

除非你的代码中有一个名为Country的类,否则我会选择

countryName = countryNameByCode["DE"]

它很清晰、简洁,易于阅读。

地图首先不是一个集合,而是一张地图。因此,我不会选择像 countriescountriesByCode 这样的名称。根据上下文,强调地图的参数有时可能是合理的(请参见 unwind's answer)。但就个人而言,在你的情况下,我认为

countryName = CountryCodeToName["DE"]

或类似的内容并不能很好地反映您的意图(获取一个国家名称),就像上面提供的名称一样。


-1

建议直接将映射的内容转为复数形式。

例如:country = countries[code]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接