如何用Java命名HashMap?

use*_*089 52 java naming-conventions

这可能是一个愚蠢的问题,但我从来没有找到一种令人满意的方法来命名HashMap<K,V>Java中的类型变量.例如-可以说我有一个HashMap,每一个桶是一<K,V>对,其中K一个String说,代表"国家"和VInteger代表县国家有数量.

应该HashMap被命名为" mapStateCounty"," stateToCountyMap"等?哪一个看起来在逻辑上更具吸引力和直观性,而不会让人感到困惑和冗长?

Ray*_*oal 36

我喜欢这个问题,因为Java不允许通过运营商进行地图访问[].在其他语言中我们可以说像

numberOfCountiesIn["HI"]
Run Code Online (Sandbox Code Playgroud)

要么

countyCountOf["CA"]
Run Code Online (Sandbox Code Playgroud)

要么

numCountiesIn->{"MA"}
Run Code Online (Sandbox Code Playgroud)

或者(在Scala中,这很酷)

numCountiesIn("WA")
Run Code Online (Sandbox Code Playgroud)

等等.由于这个愚蠢的get词,这些都不适用于Java !

countyCounts.get("NY")
Run Code Online (Sandbox Code Playgroud)

确实!

编辑:我认为这countyCounts最好的答案(恕我直言); 我只是强调需要get限制一个人的选择.

  • +1不包括后向匈牙利表示法. (2认同)
  • 我认为 `CountryCounts` 会导致这样的假设:该变量包含一个简单的集合,如列表,但不是地图。你如何区分它们? (2认同)
  • 我认为使用诸如“countyCountsByState”之类的名称指定键集的性质会有一些价值 (2认同)

RAY*_*RAY 29

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

就个人而言,我喜欢打电话给我的地图keyToValuevalueByKey.


Mat*_*all 8

我会称之为numCountiescountyCounts.

  • 我有时将地图命名为将K作为参数并返回V的函数.该约定导致名称类似于此答案中的名称. (8认同)

Dim*_*nev 7

首先避免将实现细节放在变量的名称中,例如.今天你正在使用一个界面,但明天你可以决定以另一种类型存储你的数据,你的变量的名称必须重构,否则它将变得无效和误导.StateToCountyMapMap

您的数据表示州与其县数的关联,因此我的建议是将变量命名为stateToNumberOfCounties.在该名称中的关键点是to,它标明这变量存储的关联,在此之前的部分是key和所述部分之后是value或者values被关联到对应key.另外,将变量命名为不明确是stateToCountyNumber因为无法判断它是否存储州与县数之间的关系,或者它存储了一个代表州与州协会数量的单一数字,因此您必须返回在您的代码中检查它是类型Map还是类型int.

  • @ user93796:他写的东西很有意义。您能解释一下您不同意的地方吗?又为什么呢?谢谢。 (2认同)

Nou*_*non 5

我在countiesByState 这里找到了一个很好的例子:

valuesByKeys,就像teamByCaptains中一样。如果要同时包含键和值,这似乎是最好的选择。在较高的级别上,您可以将其视为“团队”来阅读,因此对团队执行的所有操作均由团队执行。“ byCaptains”前缀应按其原意读取:一个不太重要的限定符,该限定符跟随团队在周围,以帮助某人理解他们的结构(如果需要)。

这还允许您使用漂亮的符号访问JSP中的值countiesByState[myState]