【问题标题】:Name of "functions" class is not as per java naming convention“函数”类的名称不符合 java 命名约定
【发布时间】:2020-11-09 12:44:22
【问题描述】:

在浏览 Apache Spark for Java 语言的文档时,我在包 org.apache.spark.sql 下遇到了一个类 functions,它不符合类名的标准 java 命名约定。 这个全小写字母的类名是否代表一种特殊情况或可能是一个错字?

文档链接:https://spark.apache.org/docs/latest/api/java/index.html

【问题讨论】:

  • 不,这不是错字,它被称为functions,故事结束。为什么?也许是因为它只有static 成员,并且通过org.apache.spark.sql.functions.someFunction 访问它们看起来比org.apache.spark.sql.Functions.someFunction 更干净。
  • @luk2302 实际上,我发现它没有简单地遵循约定的名称那么干净。
  • 命名约定只是……命名约定。您可以随意命名类。如果类不能被命名为小写,它将被语言规范本身阻止。
  • @Avneet 命名约定就是这样——约定。他们不必被遵循。这可能是一个错字,由于向后兼容性,现在他们无法修复它,它可能就像 luk2302 描述的那样,作者认为它看起来更干净,或者可能是其他原因。
  • @Slaw¯\_(ツ)_/¯

标签: java apache-spark naming-conventions


【解决方案1】:

这是一个设计决定,而不是一个错字。

org.apache.spark.sql.functions 类的所有函数都是static,并且可能只会与静态导入一起使用。

例如:

import static org.apache.spark.sql.functions.abs;

并且会在abs(col("columnName"));这样的代码中直接引用


另一方面,(如 cmets 中所讨论的)命名约定只是要遵循的准则。命名(caps、Camel 或snake case)不会改变代码的语义。

【讨论】:

  • 只是为了明确一点,这个功能不受类名的任何影响;如果该类被命名为Functions,它仍然可以毫无问题地静态导入。
猜你喜欢
  • 1970-01-01
  • 2018-09-28
  • 2017-05-07
  • 2018-05-31
  • 2015-07-08
  • 2018-11-22
  • 1970-01-01
  • 2021-03-20
  • 1970-01-01
相关资源
最近更新 更多