如何在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。

我不相信在任何地方都有一个硬编码的规则,告诉你如何命名你的地图,所以只要你提出一个对你(和你的队友)有意义的规则,那么它应该没问题。

就个人而言,我喜欢调用我的地图keyToValuevalueByKey

我将其称为numCountiescountyCounts

首先避免将实现细节放在variables的名称中,例如StateToCounty Map 。 今天你正在使用一个Map接口,但是明天你可以决定将数据存储在另一个types中,并且你的variables的名字必须被重构,否则它将变得无效和误导。

你的数据代表了一个州与其县数的联系,所以我的build议是把这个variables命名为stateToNumberOfCounties 。 这个名字的关键在于指定这个variables存储一个关联,之前的部分是key ,而后面的部分是关联到相应key或多个values 。 另外,将variables命名为stateToCountyNumber也是不清楚的,因为我们不能确定它是否存储了一个州和它的县数之间的关系,或者它存储了一个单一的数字来表示州与县的关联数量,因此你必须去在你的代码中来回检查它是Maptypes还是inttypes。

无论什么解释最好 – 在这种情况下, stateToCountyMap是好的,否则可以使用countiesInStateMap

我在这里find了一个很好的例子:

valuesByKeys ,如在teamCyCaptains中。 如果你要包括关键和价值,这似乎是最好的。 在很高的层面上,你可以把它看作是“团队”,所以任何对它执行的任务都是在团队中进行的。 “byCaptains”前缀的含义如下:一个不太重要的限定符,跟随团队来帮助某人理解结构,如果他们需要的话。

这也允许你用一个很好的符号countiesByState[myState]来访问JSP中的一个值。

我的意见是要有countiesCountOfStateMap或简单的countiesOfStateMap因为我们将得到县使用国家计数。

这样做会更有意义,所以当新人查看你的代码时,他会意识到它包含的内容。

但是在一天结束的时候,你决定使用恰当的名字和@tulskiy来提及类和variables是比较困难的事情之一。

我将它称为mapStatesbyCountyCount ,然后再次它的位冗长的variables名称…

在这个variables中存储状态和县,这将是混乱的命名它映射 – 调用它stateCountyHashnumCountiesByState