Ответ 1
ProvincesByCountry
Как мы называем переменную словаря?
Скажем в моем методе, у меня есть Dictionary<string, List<string>> dictionary;
, где ключи dictionary
являются названиями стран, а значения - списками названий провинций/состояний. Как мне переименовать dictionary
?
Я знаю, что мы можем создать класс Country
для этого примера. Но, пожалуйста, не упоминайте эту альтернативу, потому что я думаю о хорошем соглашении об именах здесь.
ProvincesByCountry
Я использую в основном одно из следующих:
Мне нравится XtoYMap
или YFromX
.
Именование всегда контекстуально. Таким образом, в этом конкретном случае целесообразно указать какое-либо имя, определяющее сопоставление страны с состоянием.
если это всего лишь устройство для цикла в более широком контексте, а затем отбрасывается, я обычно просто перехожу с коротким временным типом var, как...
var dict = GetCountryStateMapping();
foreach(var item in dict)
{
//Something....
}
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 это иногда генерирует довольно длинные имена. Но я понятия не имею, как всегда иметь явные, но всегда короткие имена. Вы всегда должны идти на компромисс. И это, конечно, дело вкуса.
Этот шаблон не работает (или, по крайней мере, вы разбиваете мозг), когда ключи также являются словарями или когда у вас есть список словарей списков словарей или каких-то других сумасшедших экзотических вещей. Но я не помню, чтобы было много уровней гнездования, поэтому я доволен этим.
провинции, провинцияМап, провинцияДлясловия
Все приходят на ум. Мне нравится regionMap. Если это поле члена, я бы добавил префикс "m_", как в "m_provinceMap".