web-dev-qa-db-ja.com

C#辞書の命名規則

辞書変数に名前を付けるにはどうすればよいですか?

私のメソッドで言うDictionary<string, List<string>> dictionary;、ここでdictionaryのキーは国名で、値は州/州名のリストです。 dictionaryの名前を変更するにはどうすればよいですか?

この例では、Countryクラスを作成できることを知っています。しかし、ここでは良い命名規則を考えているので、この代替案については言及しないでください。

61
Shuo
ProvincesByCountry
80
Heinzi

私は主にこれらの1つを使用します:

  • CountryToStatesDictionary
  • CountryToStatesMap
  • CountryToStatesMapping
19
herzmeister

XtoYMapまたはYFromXが好きです。

7
Lou Franco

ProvincesByCountryは、国と州を1対1でマッピングするように聞こえるため、十分に明確ではありません。 ProvincesByCountry ["Germany"]にアクセスするとき、1つの値がオブジェクトのリストではなくオブジェクトであると想定しています。

私の個人的なパターンは似ています:

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

ただし、値を説明する名詞がその性質上複数形である場合は、接尾辞arrays、またはlistsを使用します。英語では、実際に「複数」にすることはできません複数。私は個人的には常にIEnumerableまたはIEnumerable <T>の実際の実装に関係なく、arraysを使用していますリスト、または配列など。

あなたの場合、それは次のようになります:

ProvinceArraysByCountry

それが科学的な正確さで何であるかを伝えます。

値として辞書がある場合は、このルールを再帰的に適用します。アクセスの順序は、名前の単語の順序と逆になります。あなたが惑星を追加すると想像してください:

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

そして最後に、ここで最後の小さなストローク。そのような辞書がオブジェクトのプロパティとオブジェクト自体をマップしている場合は、キーセクションでオブジェクトを説明するWordを省略します。これが私の意味です:

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

私はこのパターンを無条件に使用します。これは推測の余地がまったくないため、良いことです。欠点は、かなり長い名前が生成されることがあります。しかし、私は常に明示的であるが常に短い名前を持つ方法を知りません。常に妥協する必要があります。もちろん、それは好みの問題です。

このパターンは、キーが辞書でもある場合、または辞書のリストの辞書のリストまたは他のクレイジーなエキゾチックなものがある場合は機能しません(または少なくとも頭が壊れます)。しかし、ネストのレベルがそれほど多くないことを覚えていないので、満足しています。

5
Stepan Stulov

命名は常に文脈に依存します。したがって、この特定のケースでは、国と州のマッピングを指定する名前が適切です。

これがより大きなコンテキスト内のループ用のデバイスであり、その後破棄された場合、通常は次のような短いtempタイプの変数を使用します...

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

provinces、ProvinceMap、ProvinceDictionary

すべてが頭に浮かぶ。私は自分のProvinceMapが好きです。メンバーフィールドの場合は、「m_provinceMap」のように「m_」プレフィックスを追加します。

2