Comment nommer un HashMap en Java?
c'est peut-être une question idiote, mais je n'ai jamais trouvé une façon satisfaisante de nommer une variable de type HashMap<K,V>
en Java. Par exemple - disons que j'ai un HashMap
où chaque seau est un <K,V>
Paire où K
est un String
dire représentant un "État" et V
est un Integer
représentant le nombre de comtés de l'état.
si le HashMap
être nommé en tant que "mapStateCounty
","stateToCountyMap
", etc. ?
Qui semble logiquement plus attrayant et intuitif à comprendre sans ça semble confus et verbeux?
9 réponses
j'aime cette question parce que Java ne permet pas l'accès aux map via un opérateur comme []
. Dans d'autres langues, nous pourrions dire des choses comme
numberOfCountiesIn["HI"]
ou
countyCountOf["CA"]
ou
numCountiesIn->{"MA"}
ou (en Scala, c'est cool)
numCountiesIn("WA")
et sur et sur. Aucun de ceux-ci ne fonctionne à Java, à cause de cette bêtise get
mot!
countyCounts.get("NY")
en Effet!
EDIT: en fait, je pense countyCounts
est le répondre (IMHO); je faisais juste remarquer que le besoin de get
limite ses choix.
Je ne crois pas qu'il y ait une règle écrite qui vous indique comment nommer votre carte, donc tant que vous arrivez avec 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
.
tout D'abord, évitez de mettre les détails de la mise en œuvre dans le nom d'une variable, par exemple StateToCountyMap
. Aujourd'hui vous utilisez un Map
interface mais demain vous pouvez décider de stocker vos données dans un autre type et le nom de votre variable doit être remanié sinon il deviendra invalide et trompeur.
vos données représentent l'association d'un État à son nombre de comtés, donc mon conseil est de nommer la variable comme stateToNumberOfCounties
. Le point-clé de ce nom est to
qui désigne que cette variable stocke une association, la partie avant qui est le key
et la partie après le value
ou values
qui sont associés à la correspondante key
. Il serait également indistinct de nommer la variable comme stateToCountyNumber
parce qu'on ne peut pas dire si elle stocke la relation entre un état et son nombre de comtés ou elle stocke un seul nombre qui représente le nombre d'État aux associations de comtés, donc vous devriez aller et venir dans votre code pour vérifier si elle est de type Map
ou de type int
.
j'ai trouvé un excellent cas pour countiesByState
ici:
valuesByKeys
, comme dans teamsByCaptains. Si vous voulez inclure à la fois la clé et la valeur, cela semble être le mieux lu. À un niveau élevé, vous pouvez lire simplement comme des "équipes", donc tout ce qui est effectué est effectué sur les équipes. Le préfixe "byCaptains" se lit comme il se doit: un qualificatif moins significatif qui suit les équipes autour pour aider quelqu'un à comprendre la structure si elles ont besoin de.
cela vous permet également d'accéder à une valeur dans un JSP avec la notation nice countiesByState[myState]
.
Quel que soit l'explique mieux Dans ce cas stateToCountyMap
est ok ou autre countiesInStateMap
peut être utilisé.
je dirais que c' mapStatesbyCountyCount, puis à nouveau son nom de variable assez long...
Mon avis, serait de l'avoir countiesCountOfStateMap
ou tout simplement countiesOfStateMap
puisque nous allons faire compter les comtés en utilisant L'État.
ce serait plus significatif de l'avoir comme ça, donc quand une nouvelle personne regarde dans votre code au moins il serait conscient de ce qu'il y a dedans.
mais à la fin de la journée, c'est votre décision d'avoir le nom approprié et comme @tulskiy mentionné nommer la classe et la variable de manière appropriée est l'une des choses les plus difficiles.
stocker les États et les comtés dans cette variable il serait déroutant de l'appeler map-call it stateCountyHash
ou numCountiesByState