-1

我一直在思考著名的 Map 类中三个方法的命名。要获取地图中的所有键,我们使用 keySet(),对于条目,使用 entrySet(),对于值,使用 values() 方法。

我发现有点奇怪的是前两个方法在名称中包含了返回的类型(set)。排除它不是更好吗?这意味着方法名称将被协调并且看起来相当不错(恕我直言!):

keys()
entries()
values()

另一种选择是为 values() 方法添加后缀:

keySet()
entrySet()
valueCollection()

对我来说,这看起来不太好,并且使代码变得丑陋。

这是一个哲学问题,因为更改方法命名会破坏向后兼容性。

对这个话题有什么想法吗?

4

2 回答 2

1

具有的主要目的Set是表示返回的集合将具有以下特征Set(即)它不会包含任何重复项。

而且由于values()像其他人一样,返回一个Collection(请注意,keySet并且entrySet还返回一个集合,但是一个特定的集合, ),在方法名称中包含该词Set将非常简单。collection

于 2013-11-12T12:16:13.733 回答
0

将方法名称保留为keySetentrySet表明您正在返回 aSet并承诺Set没有重复的特征。

在保留名称时,keysentries应该返回一个CollectionIterable这样的值,以表明实现尚未提交给任何特定类型的集合的意图,并且将来可能会发生变化。

于 2013-11-12T12:16:44.947 回答