Shu*_*huo 59 c# naming-conventions
我们如何命名字典变量?
用我的方法说Dictionary<string, List<string>> dictionary;,其中dictionary国家名称和值的键是省/州名称列表.我该如何重命名dictionary?
我知道我们可以Country为这个例子创建一个类.但是请不要提到这个替代方案,因为我在这里考虑好的命名约定.
Hei*_*nzi 82
ProvincesByCountry
Run Code Online (Sandbox Code Playgroud)
her*_*ter 19
我主要使用其中一个:
命名始终是上下文的.因此,在这种特定情况下,指定国家/地区映射的某个名称是合适的.
如果这只是一个在更大的上下文中循环然后丢弃的设备,我通常会选择一个短临时类型的var ...
var dict = GetCountryStateMapping();
foreach(var item in dict)
{
//Something....
}
Run Code Online (Sandbox Code Playgroud)
ProvincesByCountry不够明确,因为这听起来像将国家/地区映射到省份。当访问ProvincesByCountry [“ Germany”]时,我应该假定一个值是一个对象而不是对象列表。
我的个人风格类似:
[Plural of a noun describing the value]By[Singular of a noun describing the key]
Run Code Online (Sandbox Code Playgroud)
但是,如果描述该值的名词本质上为复数形式,那么我将使用后缀数组或list,因为英语中您不能真正“复数化”复数形式。我个人始终坚持使用数组,而不管我正在使用的IEnumerable或IEnumerable <T>的实际实现是List还是Array或其他任何东西。
就您而言,它变成:
ProvinceArraysByCountry
Run Code Online (Sandbox Code Playgroud)
以科学的精确度告诉它是什么。
如果有字典作为值,我将递归应用此规则。然后,访问顺序与名称中的单词顺序相反。假设您添加了行星:
ProvinceArraysByCountryByPlanet["Earth"]["Germany"][0] = "Bavaria"
ProvinceArraysByCountryByPlanet["Earth"]["Germany"][1] = "Rhineland-Palatinate"
Run Code Online (Sandbox Code Playgroud)
最后是这里的最后一招。如果此类词典映射了对象属性和对象本身,那么我将在关键部分省略描述对象的单词。这是我的意思:
NodesByIndex[node.Index] = node; // - Do
NodesByNodeIndex[node.Index] = node; // - Don't
Run Code Online (Sandbox Code Playgroud)
我无条件使用此模式,因为它完全没有猜测的余地。缺点是有时会生成相当长的名称。但是我不知道如何拥有总是明确但总是简短的名字。您总是必须妥协。这当然是一个品味问题。
当键也是字典时,或者当您拥有字典列表中的字典列表或某些其他疯狂的异国情调时,此模式将不起作用(或至少您会伤脑筋)。但是我不记得有那么多的嵌套,所以我对此感到满意。
| 归档时间: |
|
| 查看次数: |
20068 次 |
| 最近记录: |