Именования в C# словарь
как мы называем переменную словарь?
скажем, в моем методе у меня есть Dictionary<string, List<string>> dictionary;, где ключи dictionary - названия стран, а значения-списки названий провинций/Штатов. Как я должен переименовать dictionary?
Я знаю, что мы можем создать Country для этого примера класс. Но, пожалуйста, не упоминайте эту альтернативу, потому что я думаю о хорошем соглашении об именах здесь.
6 ответов:
Я использую в основном один из них:
- CountryToStatesDictionary
- CountryToStatesMap
- CountryToStatesMapping
именование всегда контекстно. Поэтому в этом конкретном случае уместно какое-то имя, указывающее страну для отображения состояния.
если это было просто устройство для цикла в более широком контексте, а затем отброшено, я обычно просто иду с коротким временным типом 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