我们如何命名字典变量?
在我的方法中说我有Dictionary<string, List<string>> dictionary;
,其中dictionary
的键是国家/地区名称,值是省/州名称列表。我应该如何重命名dictionary
?
我知道我们可以为这个例子创建一个Country
类。但请不要提及这个替代方案,因为我在这里考虑好的命名约定。
答案 0 :(得分:78)
ProvincesByCountry
答案 1 :(得分:17)
我主要使用其中一种:
答案 2 :(得分:7)
我喜欢XtoYMap
或YFromX
。
答案 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”。