我一直在考虑着名的Map类中三种方法的命名。要获取地图中的所有键,我们使用keySet(),对于条目有entrySet(),对于值,使用values()方法。
我觉得有点奇怪的是前两个方法在名称中包含返回的类型(set)。排除它会不会更好?这意味着方法名称将协调一致,看起来很不错(imho!):
keys()
entries()
values()
另一种选择是使用values()方法后缀:
keySet()
entrySet()
valueCollection()
对我而言,这看起来不太好,并且使代码难看。
这是一个哲学问题,因为改变方法命名会破坏向后兼容性。
关于这个主题的任何想法?
答案 0 :(得分:1)
拥有Set
的主要目的是表示返回的集合具有Set
的特征(即)它不包含任何重复项。
由于values()
与其他人一样,因此返回Collection
(请注意,keySet
和entrySet
也会返回一个集合,但是具体的集合{{1} }),在方法名称中包含Set
单词非常简单。
答案 1 :(得分:0)
将方法名称保留为keySet
或entrySet
表示您的意图是返回Set
并承诺Set
的特征,即不重复。
在将名称保持为keys
或entries
时,您应该返回Collection
或Iterable
,以便显示实施未提交给任何特定类型的集合的意图这可能会在将来发生变化。