Именования в C# словарь



как мы называем переменную словарь?



скажем, в моем методе у меня есть Dictionary<string, List<string>> dictionary;, где ключи dictionary - названия стран, а значения-списки названий провинций/Штатов. Как я должен переименовать dictionary?



Я знаю, что мы можем создать Country для этого примера класс. Но, пожалуйста, не упоминайте эту альтернативу, потому что я думаю о хорошем соглашении об именах здесь.

755   6  

6 ответов:

ProvincesByCountry

Я использую в основном один из них:

  • CountryToStatesDictionary
  • CountryToStatesMap
  • CountryToStatesMapping

мне нравится XtoYMap или YFromX.

именование всегда контекстно. Поэтому в этом конкретном случае уместно какое-то имя, указывающее страну для отображения состояния.

если это было просто устройство для цикла в более широком контексте, а затем отброшено, я обычно просто иду с коротким временным типом var...

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

ProvincesByCountry недостаточно ясно, так как это звучит как отображение стран в провинции один к одному. При доступе ProvincesByCountry["Германия"] Я бы предположил, что одно значение-это объект, а не список объектов.

мой личный шаблон похож:

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

однако, если существительное, описывающее значение, является множественным по своей природе, то я использую постфикс массивы или списки, как по-английски вы не может действительно "плюрализировать" множественное число. Я лично всегда придерживаюсь массивы, независимо от фактической реализации IEnumerable или IEnumerable Я использую, что список или массив или что-то еще.

в вашем случае получается:

ProvinceArraysByCountry

рассказывает, что это такое с научной точностью.

Я применить это правило рекурсивно, если есть словари в качестве значений. Порядок доступа тогда идет в обратном порядке к порядку слов в названии. Представьте, что вы добавляете планеты:

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

и, наконец, последний маленький штрих здесь. Если такой словарь сопоставляет свойства объекта и сами объекты, то я опускаю слово, описывающее объект в ключевом разделе. Вот что я имею в виду:

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

Я использую этот шаблон безоговорочно, что хорошо, поскольку он не оставляет абсолютно никакого места для догадок. Con - это иногда генерирует довольно длинные имена. Но я понятия не имею как всегда явно, но всегда короткие имена. Вы всегда должны идти на компромисс. И это конечно дело вкуса.

этот шаблон не работает (или, по крайней мере, вы сломаете свой мозг), когда ключи также словари или когда у вас есть список словарей списков словарей или некоторых других сумасшедших экзотических вещей. Но я не помню, чтобы у меня было так много уровней вложенности, поэтому я доволен этим.

провинциях, provinceMap, provinceDictionary

все приходит на ум. Мне нравится быть самим собой. Если это поле-член, я бы добавил префикс "m_", как в"m_provinceMap".

Comments

    Ничего не найдено.