{% include code-style-navbar.zh.md %}
{% toc %}
对于 Scala 的 API 或者纯 Scala libraries,我们会选择使用 Scala。
在 core API 和 运行时的组件中,我们不使用 Scala。我们的目标是从这些组件中删除现有的 Scala 使用(代码和依赖项)。
⇒ 这并不是因为我们不喜欢 Scala,而是考虑到“用正确的工具做正确的事”的结果(见下文)。
对于 API,我们使用 Java 开发基础内容,并在上层使用 Scala。
为什么我们不在 Core API 和 Runtime 中使用 Scala ?
保持 Java API 和 Scala API 在功能和代码质量方面的同步。
Scala API 也应该涵盖 Java API 的所有特性。
Scala API 应该有一个“完整性测试”,就如下面 DataStream API 的示例中的一样: https://github.com/apache/flink/blob/master/flink-streaming-scala/src/test/scala/org/apache/flink/streaming/api/scala/StreamingScalaAPICompletenessTest.scala
对于类字段和方法返回类型,不要依赖隐式类型推断:
不要这样:
var expressions = new java.util.ArrayList[String]()
要这样:
var expressions: java.util.List[String] = new java.util.ArrayList[]()
堆栈上局部变量的类型推断是可以的。
private[flink]
和 protected
的成员是公开的。private[flink]
仍然会暴露所有成员。使用换行来构造你的代码。
x.map().map().foreach()
)。