Подтвердить что ты не робот

Соглашение об именах для словаря С#

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

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

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

4b9b3361

Ответ 1

ProvincesByCountry

Ответ 2

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

  • CountryToStatesDictionary
  • CountryToStatesMap
  • CountryToStatesMapping

Ответ 3

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

Ответ 4

Именование всегда контекстуально. Таким образом, в этом конкретном случае целесообразно указать какое-либо имя, определяющее сопоставление страны с состоянием.

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

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

Ответ 5

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 это иногда генерирует довольно длинные имена. Но я понятия не имею, как всегда иметь явные, но всегда короткие имена. Вы всегда должны идти на компромисс. И это, конечно, дело вкуса.

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

Ответ 6

провинции, провинцияМап, провинцияДлясловия

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