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 où
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