java - 无法确定返回 SortedSet 的方法的返回类型

标签 java naming

我应该创建一个类,它应该是一个值区间的容器(就像在数学中)。我已经决定在内部使用 SortedSet

我应该实现的其中一件事是“获取包含区间内所有元素的有序集合”的方法。

class Interval {
    private SortedSet sortedSet = new something();

    ...

    <<method that should return an ordered set of values>>
}

我的问题在于方法的返回类型和名称应该是什么。几个假设出现:

  1. SortedSet getSortedElements(); 我在内部使用 SortedSet,因此我应该返回该类型。我应该在方法名称中说明该意图。
  2. SortedSet getElements(); 我在内部使用 SortedSet,但在方法名称中声明它没有意义(我看不出有什么大不了的这个)。
  3. Set getElements(); 我应该尝试始终返回最基本的类型,因此我返回了一个 Set。通过契约(Contract)和方法的定义,人们已经知道所有的元素都是有序的。
  4. Set getSortedElements(); 对于方法返回类型,同上。关于方法名称,您清楚地说明了此方法将返回什么:一组已排序的元素。

我倾向于使用 4. ,但其他的似乎也不错。有明显的赢家吗?为什么?

最佳答案

SortedSet 是一个接口(interface),带有对元素进行排序的约定。它还公开了一些 Set 中不可用的方法(例如 first())。如果您应该返回一个遵守该契约的对象(例如,在 iterator() 上返回有序值),那么您应该返回一个 Sorted Set。如果不是,您应该返回一个 Set(或一个 Collection)。

您可以根据希望如何使用结果来确定要返回的内容。先想一想“得到区间内所有元素的有序集合”是什么意思,再考虑实现。

顺便上代码

private SortedSet sortedSet = new SortedSet();

是非法的,因为 SortedSet 是一个接口(interface)。由于这是家庭作业,我将留给您找出问题所在。

关于java - 无法确定返回 SortedSet 的方法的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2885885/

相关文章:

ios - xibs 3.5inch 和 4inch 的命名约定

c - ANSI C 和函数重载

Java Heroku 应用程序在本地与工头一起运行

java - FragmentActivity 的 ActionBar 出现空指针异常

java - 在 Lotus Notes 9 或 8.5 上使用多个用户创建文档

java - 可以更改 GPLv3 源代码的包名称吗?

java - Google App Engine 中的生日查询

java - 大小为 2N 的数组中的 N 个重复元素

c++ - 在 C++ 中命名 int 或 char 变量时, "n"或 "ch"前缀是常见前缀吗?

javascript - 在 SPA 中创建干净的 ID 空间的常见解决方案是什么?