如何在Java中命名HashMap?
这可能是一个愚蠢的问题,但我从来没有find一个令人满意的方式来命名Java中的typesHashMap<K,V>
的variables。 例如 – 可以说我有一个HashMap
,其中每个桶是一个<K,V>
对,其中K
是一个String
表示“状态”, V
是一个Integer
代表状态的县数。
HashMap
应该被命名为“ mapStateCounty
”,“ stateToCountyMap
”等。 哪一个在逻辑上看起来更具吸引力,而且直观易懂,不会令人困惑和冗长?
我喜欢这个问题,因为Java不允许像[]
这样的操作符访问地图。 在其他语言中,我们可以说
numberOfCountiesIn["HI"]
要么
countyCountOf["CA"]
要么
numCountiesIn->{"MA"}
或者(在斯卡拉,这很酷)
numCountiesIn("WA")
并继续。 这些工作都不在Java中,因为那个愚蠢的词!
countyCounts.get("NY")
确实!
编辑:我其实认为countyCounts
是最好的答案(恕我直言); 我只是指出,需要get
限制的select。
我不相信在任何地方都有一个硬编码的规则,告诉你如何命名你的地图,所以只要你提出一个对你(和你的队友)有意义的规则,那么它应该没问题。
就个人而言,我喜欢调用我的地图keyToValue
或valueByKey
。
我将其称为numCounties
或countyCounts
。
首先避免将实现细节放在variables的名称中,例如StateToCounty Map
。 今天你正在使用一个Map
接口,但是明天你可以决定将数据存储在另一个types中,并且你的variables的名字必须被重构,否则它将变得无效和误导。
你的数据代表了一个州与其县数的联系,所以我的build议是把这个variables命名为stateToNumberOfCounties
。 这个名字的关键在于指定这个variables存储一个关联,之前的部分是key
,而后面的部分是关联到相应key
或多个values
。 另外,将variables命名为stateToCountyNumber
也是不清楚的,因为我们不能确定它是否存储了一个州和它的县数之间的关系,或者它存储了一个单一的数字来表示州与县的关联数量,因此你必须去在你的代码中来回检查它是Map
types还是int
types。
无论什么解释最好 – 在这种情况下, stateToCountyMap
是好的,否则可以使用countiesInStateMap
。
我在这里find了一个很好的例子:
valuesByKeys
,如在teamCyCaptains中。 如果你要包括关键和价值,这似乎是最好的。 在很高的层面上,你可以把它看作是“团队”,所以任何对它执行的任务都是在团队中进行的。 “byCaptains”前缀的含义如下:一个不太重要的限定符,跟随团队来帮助某人理解结构,如果他们需要的话。
这也允许你用一个很好的符号countiesByState[myState]
来访问JSP中的一个值。
我的意见是要有countiesCountOfStateMap
或简单的countiesOfStateMap
因为我们将得到县使用国家计数。
这样做会更有意义,所以当新人查看你的代码时,他会意识到它包含的内容。
但是在一天结束的时候,你决定使用恰当的名字和@tulskiy来提及类和variables是比较困难的事情之一。
我将它称为mapStatesbyCountyCount ,然后再次它的位冗长的variables名称…
在这个variables中存储状态和县,这将是混乱的命名它映射 – 调用它stateCountyHash
或numCountiesByState