为 return 流式传输的 java 方法命名

Naming java methods that return streams

return流的方法有命名约定吗? 我发现的唯一提及是 answer on S.O(最后一段),但我看不出它基于什么。

自从我写下那段话后,我就觉得有必要回答一下。 :-)

假设您有一个 class 表示单一类型事物的聚合,并且您想要 return 其中的 Stream 给调用者。

如果您 return 的内容完全明确,您不妨调用方法 stream()。 JDK中有很多方法名为stream(),return一个明显类型的流。

有时您 return 是同一事物或不同种类事物或其他事物的不同表示。在那种情况下,似乎确实有一种约定,即选择一个复数名词来表示流中 returned 的事物类型。

要查看这些,请查看 Javadoc 并单击顶部导航栏中的 使用 link。这会将您带到交叉引用页面。查找具有您感兴趣的类型的 return 值的所有方法。

例如,请参阅 Stream, IntStream, LongStream, and DoubleStream 使用 页面。 return 流中有许多名为 stream() 的方法。但也有:

  • java.io.BufferedReader.lines()
  • java.lang.CharSequence.chars()
  • java.lang.CharSequence.codePoints()
  • java.nio.CharBuffer.chars()
  • java.nio.file.File.lines()
  • java.util.Random.ints()
  • java.util.Random.longs()
  • java.util.Random.doubles()
  • java.util.SplittableRandom.ints()
  • java.util.SplittableRandom.longs()
  • java.util.SplittableRandom.doubles()
  • java.util.concurrent.ThreadLocalRandom.ints()
  • java.util.concurrent.ThreadLocalRandom.longs()
  • java.util.concurrent.ThreadLocalRandom.doubles()

当然,还有很多方法不符合这个。 NIO 文件实用程序 class 具有 Files.find()Files.list()Files.walk()。拆分字符串的结果流由 java.util.regex.Pattern.splitAsStream 编辑 return。我认为没有人喜欢 AsStream 后缀,但话又说回来,没有人能想到更好的东西。另一方面,为获得正则表达式匹配结果流而提议的 JDK 9 增强功能将被命名为 Matcher.results().