Comment nommer un HashMap en Java?

Cela peut être une question stupide, mais je n’ai jamais trouvé de manière satisfaisante de nommer une variable de type HashMap en Java. Par exemple – disons que j’ai un HashMap où chaque seau est une paire K est un mot Ssortingng représentant “State” et V est un Integer représentant le nombre de comtés dans l’état.

Le HashMap doit- HashMap être nommé ” mapStateCounty “, ” stateToCountyMap “, etc.? Lequel semble logiquement plus attrayant et intuitif à comprendre sans paraître déroutant et verbeux?

J’aime cette question car Java n’autorise pas l’access à la carte via un opérateur comme [] . Dans d’autres langues, on pourrait dire des choses comme

 numberOfCountiesIn["HI"] 

ou

 countyCountOf["CA"] 

ou

 numCountiesIn->{"MA"} 

ou (à Scala, c’est cool)

 numCountiesIn("WA") 

et ainsi de suite. Aucun de ceux-ci ne fonctionne en Java, à cause de ce mot de passe stupide!

 countyCounts.get("NY") 

Effectivement!

EDIT: Je pense en fait que countyCounts est la meilleure réponse (IMHO); Je ne faisais que souligner que le besoin d’ get limite les choix.

Je ne crois pas qu’il y ait une règle écrite où que ce soit qui vous indique comment nommer votre carte, aussi longtemps que vous proposez une règle qui a du sens pour vous (et vos coéquipiers), alors ça devrait aller.

Personnellement, j’aime appeler mes cartes keyToValue ou valueByKey .

Je l’appellerais numCounties ou countyCounts .

Évitez tout d’abord de mettre les détails de l’implémentation au nom d’une variable, par exemple StateToCounty Map . Aujourd’hui, vous utilisez une interface Map , mais demain, vous pouvez décider de stocker vos données dans un autre type et le nom de votre variable doit être refactorisé, sinon il deviendra invalide et trompeur.

Vos données représentent l’association d’un état à son nombre de comtés. Je vous conseille donc de nommer la variable stateToNumberOfCounties . Le point clé de ce nom est to qui désigne que cette variable stocke une association, la partie avant celle-ci est la key et la partie suivante est la ou les values associées à la key correspondante. Il serait également indistinct de nommer la variable comme stateToCountyNumber car on ne peut pas dire si elle stocke la relation entre un état et son nombre de comtés ou si elle stocke un seul numéro représentant le nombre d’états aux associations de comté. aller-retour dans votre code pour vérifier s’il est de type Map ou de type int .

J’ai trouvé une excellente affaire pour les countiesByState ici :

valuesByKeys , comme dans teamsByCaptains. Si vous voulez inclure à la fois la clé et la valeur, cela semble mieux se lire. À un niveau élevé, vous pouvez le lire comme de simples «équipes», de sorte que tout ce qui est exécuté est exécuté sur des équipes. Le préfixe “byCaptains” se lit comme il se doit: un qualificatif moins significatif qui suit les équipes pour aider quelqu’un à comprendre la structure si nécessaire.

Cela vous permet également d’accéder à une valeur dans un JSP avec la belle notation countiesByState[myState] .

Tout ce qui explique le mieux – Dans ce cas, stateToCountyMap est ok ou sinon countiesInStateMap peut être utilisé.

Je l’appellerais mapStatesbyCountyCount , puis encore une fois son nom de variable peu volumineux

Mon avis serait de le compter countiesCountOfStateMap ou simplement countiesOfStateMap puisque nous aurons le compte des comtés en utilisant l’État.

Il serait plus significatif de l’avoir comme ça, alors quand une nouvelle personne regarde votre code au moins, il sera au courant de ce qu’il contient.

Mais en fin de compte, c’est votre décision d’avoir le nom approprié et comme @tulskiy a mentionné nommer la classe et la variable comme il se doit.

Stocker des états et des comtés dans cette variable serait déroutant de la nommer map – appelez-la stateCountyHash ou numCountiesByState