命名约定是什么';属于';用Java是什么意思?
正如我们在Java8中看到的,有许多名为'of',like的方法,还有许多类似于Akka的库命名约定是什么';属于';用Java是什么意思?,java,Java,正如我们在Java8中看到的,有许多名为'of',like的方法,还有许多类似于Akka的库 这“of”是什么意思?它是英文单词“of”还是“Object Factory”的缩写?它是英文单词,是的。它的选择通常是为了使表达式读起来像一个英语短语。例如,Stream.of(3,4)应该看起来像“Stream of three and four”,这有点像“一个由数字3和4组成的流”的缩写版本。传统上,如果你查看包装类,它们都包含valueOf(XXX)方法来构建给定值类型的包装器类的实例 Jav
这“of”是什么意思?它是英文单词“of”还是“Object Factory”的缩写?它是英文单词,是的。它的选择通常是为了使表达式读起来像一个英语短语。例如,
Stream.of(3,4)
应该看起来像“Stream of three and four”,这有点像“一个由数字3和4组成的流”的缩写版本。传统上,如果你查看包装类,它们都包含valueOf(XXX)
方法来构建给定值类型的包装器类的实例
Java从第一天起就遵循这个命名约定。类似地,大多数Java-8引入的类都包含(…)方法的
Stream.of(...)
LocalDate.of(year, month, dayOfMonth)
Instant.ofEpochSecond(epochSecond)
and many more.
不仅有可用的valueOf
或of
方法,而且在不同类中很少有其他方法用于特定的目的或任务类型,并且它们都指定了表示该任务的最合适名称
- parseXXX():用于解析给定的字符串输入。示例:
Integer.parseInt(str)、Double.parseDouble()、Date.parse(datestr)
等
- 获取(字段):从对象检索字段信息。示例:
Calendar.get(字段)、LocalDate.get(TemporalField)
等
- format():转换为不同的表示形式。示例:
String.format()、simpleDataFormat.format()、DateTimeFormatter.format()
等
这些命名约定在Java8 DateTime API中被大量使用。请查看此这是一种常用的命名约定
Joshua Bloch提到了项目1中的模式和相关命名约定:考虑静态工厂方法而不是构造函数(强调添加):
。。。
(a) 静态工厂方法的缺点是它们不容易与其他静态方法区分开来。它们在API文档中的突出之处并不在于
构造函数会这样做,因此很难弄清楚如何
实例化提供静态工厂方法而不是
构造器。Javadoc工具也许有一天会引起人们对静态文档的注意
工厂方法同时,您可以通过
在类或接口注释中提请注意静态工厂,
通过遵守常见的命名约定。以下是一些常见的
静态工厂方法的名称:
valueOf
-返回一个实例,粗略地说,该实例的值与其参数相同。这样的静态工厂是有效的
类型转换方法
of
-valueOf的简明替代品,由EnumSet(第32项)推广。
因此,正如其他人所指出的,“of”是英文单词“of”,而不是缩写。但是使用这种约定的原因之一是为了更容易发现类是否提供工厂方法,因为静态工厂不会显示在JavaDocs的单独部分中(与构造函数相比)
在我看来,使用简洁且描述式命名的静态工厂的另一个好处是,它可以生成代码,如果它充斥着new
构造函数调用,情况就不是这样了 顺便说一句,我会想象对象工厂在一个正确命名的类或方法中至少显示为“OF”。在我能想到的标准JavaAPI中的所有示例中,它在正常的英语意义上是“OF”的意思。对于第三方API,请咨询作者。(他们可能会故意忽略标识符惯例,编造首字母缩写词,而不适当地大写。)这只是又一次让它听起来像英语的半途而废的尝试。Stream.of(1,2,3)
听起来不错,但是Optional.of(1)
听起来很奇怪actorOf
甚至更奇怪,应该被称为createActor
。它也是一个简短的词,当你经常使用它时,这一点很重要。Stream。of(a,b,c)
的内容是:由a,b和c组成的流。
Stream.of(...)
LocalDate.of(year, month, dayOfMonth)
Instant.ofEpochSecond(epochSecond)
and many more.