C#字典的命名约定

时间:2010-12-02 00:54:19

标签: c# naming-conventions

我们如何命名字典变量?

在我的方法中说我有Dictionary<string, List<string>> dictionary;,其中dictionary的键是国家/地区名称,值是省/州名称列表。我应该如何重命名dictionary

我知道我们可以为这个例子创建一个Country类。但请不要提及这个替代方案,因为我在这里考虑好的命名约定。

6 个答案:

答案 0 :(得分:78)

ProvincesByCountry

答案 1 :(得分:17)

我主要使用其中一种:

  • CountryToStatesDictionary
  • CountryToStatesMap
  • CountryToStatesMapping

答案 2 :(得分:7)

我喜欢XtoYMapYFromX

答案 3 :(得分:5)

命名始终是上下文的。因此,在这种特定情况下,指定国家/地区映射的某个名称是合适的。

如果这只是一个在更大的上下文中循环然后丢弃的设备,我通常会选择像...这样的短临时类型。

var dict = GetCountryStateMapping();
foreach(var item in dict)
{
  //Something....
}

答案 4 :(得分:4)

ProvincesByCountry 不够明确,因为它听起来像是将国家一对一地映射到各省。访问 ProvincesByCountry [“Germany”] 时,我希望假设一个值是一个对象而不是一个对象列表。

我的个人模式类似:

[Plural of a noun describing the value]By[Singular of a noun describing the key]

但是,如果描述该值的名词本质上是复数,那么我使用postfix 数组列表,就像在英语中你不能真正“复数“复数。我个人总是坚持数组,无论 IEnumerable IEnumerable&lt;的实际实现如何T&gt; 我正在使用,是 List ,或 Array 或其他。

在你的情况下,它转向:

ProvinceArraysByCountry

以科学精确度说明它是什么。

如果有字典作为值,我会递归地应用此规则。然后,访问顺序与名称中单词的顺序相反。想象一下你添加行星:

ProvinceArraysByCountryByPlanet["Earth"]["Germany"][0] = "Bavaria"
ProvinceArraysByCountryByPlanet["Earth"]["Germany"][1] = "Rhineland-Palatinate"

最后这是最后一点点。如果这样的字典映射对象属性和对象本身,那么我省略了在关键部分描述对象的单词。这就是我的意思:

NodesByIndex[node.Index] = node; // - Do
NodesByNodeIndex[node.Index] = node; // - Don't

我无条件地使用这种模式,因为它完全没有猜测空间。 Con有时会产生相当长的名字。但我不知道如何总是明确但总是短名。你总是要妥协。这当然是品味问题。

这种模式不起作用(或者至少你会打破你的大脑)当钥匙也是字典时,或者当你有字典列表或其他一些疯狂的异国情调的字典时。但我不记得有那么多级别的嵌套,所以我很高兴。

答案 5 :(得分:2)

省,省地图,省词典

所有人都想到了。我喜欢省地图我自己。如果它是一个成员字段,我会添加一个“m_”前缀,如“m_provinceMap”。