簡體   English   中英

C#字典的命名約定

[英]Naming convention for a C# Dictionary

我們如何命名字典變量?

在我的方法中說我有Dictionary<string, List<string>> dictionary; dictionary的鍵是國家名稱,值是省/州名稱列表。 我該如何重命名dictionary

我知道我們可以為這個例子創建一個Country類。 但是請不要提到這個替代方案,因為我在這里考慮好的命名約定。

ProvincesByCountry

我主要使用其中一個:

  • CountryToStatesDictionary
  • CountryToStatesMap
  • CountryToStatesMapping

我喜歡XtoYMapYFromX

ProvincesByCountry不夠明確,因為它聽起來像是將國家一對一地映射到各省。 當訪問ProvincesByCountry [“Germany”]時,我希望假設一個值是一個對象而不是一個對象列表。

我的個人模式類似:

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

但是,如果描述該值的名詞本質上是復數,那么我使用后綴數組列表 ,就像在英語中一樣,你不能真正“復數”復數。 我個人總是堅持數組 ,無論IEnumerable的實際實現或IEnumerable <T>我正在使用,是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有時會產生相當長的名字。 但我不知道如何總是明確但總是短名。 你總是要妥協。 這當然是品味問題。

當密鑰也是字典或者你有字典列表或其他一些瘋狂的異國情調的字典列表時,這種模式不起作用(或者至少你會打破你的大腦)。 但我不記得有那么多層次的築巢,所以我很高興。

命名始終是上下文。 因此,在這種特定情況下,指定國家/地區映射的某個名稱是合適的。

如果這只是一個在更大的上下文中循環然后丟棄的設備,我通常會選擇一個短臨時類型的var ...

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

省,省地圖,省詞典

一切都浮現在腦海中。 我喜歡省地圖我自己。 如果它是一個成員字段,我會添加一個“m_”前綴,如“m_provinceMap”中所示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM