Convention de nommage pour un dictionnaire C #

Comment nommons-nous une variable de dictionnaire?

Dites dans ma méthode que j’ai Dictionary<string, List> dictionary; , où les clés du dictionary sont des noms de pays et les valeurs sont des listes de noms de province / état. Comment devrais-je renommer le dictionary ?

Je sais que nous pouvons créer une classe Country pour cet exemple. Mais s’il vous plaît ne mentionnez pas cette alternative parce que je pense à une bonne convention de nommage ici.

 ProvincesByCountry 

J’utilise principalement l’un de ces:

  • CountryToStatesDictionary
  • CountryToStatesMap
  • CountryToStatesMapping

J’aime XtoYMap ou YFromX .

La dénomination est toujours contextuelle. Donc, dans ce cas spécifique, un nom spécifiant le pays à indiquer est approprié.

Si c’était juste un périphérique pour une boucle dans un contexte plus large et ensuite mis au rebut, normalement je vais juste avec une variable de type temp courte comme …

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

ProvincesByCountry n’est pas assez explicite, car cela ressemble à la cartographie des pays par province. Lorsque j’accède à ProvincesByCountry [“Germany”], je suppose qu’une valeur est un object plutôt qu’une liste d’objects.

Mon modèle personnel est similaire:

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

Cependant, si un nom décrivant la valeur est pluriel par sa nature, alors j’utilise les tableaux postfixes, ou les listes , car en anglais vous ne pouvez pas vraiment “pluraliser” un pluriel. Personnellement , je m’en tiens toujours aux tableaux , quelle que soit l’implémentation réelle de IEnumerable ou IEnumerable que j’utilise, que ce soit List , Array ou autre.

Dans votre cas, il s’agit de:

 ProvinceArraysByCountry 

Indique ce que c’est avec une précision scientifique.

J’applique cette règle de manière récursive s’il existe des dictionnaires en tant que valeurs. L’ordre d’access est inversé dans l’ordre des mots du nom. Imaginez que vous ajoutez des planètes:

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

Et enfin le dernier petit coup ici. Si ce dictionnaire mappe les propriétés des objects et les objects eux-mêmes, je laisse de côté le mot décrivant l’object dans la section des clés. Voici ce que je veux dire:

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

J’utilise ce modèle sans condition, ce qui est bien car il ne laisse absolument aucune place à la conjecture. Con est qu’il génère parfois des noms assez longs. Mais je ne sais pas comment avoir des noms toujours explicites mais toujours courts. Vous devez toujours faire des compromis. Et bien sûr, c’est une question de goût.

Ce modèle ne fonctionne pas (ou du moins vous briseriez le cerveau) lorsque les clés sont aussi des dictionnaires ou lorsque vous avez une liste de dictionnaires de listes de dictionnaires ou d’autres trucs exotiques. Mais je ne me souviens pas d’avoir autant de niveaux de nidification, alors je suis content.

provinces, provinceCarte, provinceDictionnaire

Tout vient à l’esprit. J’aime la provinceCarte moi-même. Si c’est un champ membre, j’appendais un préfixe “m_”, comme dans “m_provinceMap”.