【发布时间】:2022-01-30 17:02:04
【问题描述】:
这是我在这里的第一个问题,我对 Java 还很陌生,所以如果这是一个愚蠢的问题,请原谅我。
我正在使用 JavaDocs 和注释从内部“记录”我的应用程序的预期行为,但我只是好奇在不应返回 null 的方法上使用 @NotNull 是否合适或良好的做法,但可能是由于未来的开发人员错误。
谢谢。
【问题讨论】:
-
您可以查看answer
标签: java
这是我在这里的第一个问题,我对 Java 还很陌生,所以如果这是一个愚蠢的问题,请原谅我。
我正在使用 JavaDocs 和注释从内部“记录”我的应用程序的预期行为,但我只是好奇在不应返回 null 的方法上使用 @NotNull 是否合适或良好的做法,但可能是由于未来的开发人员错误。
谢谢。
【问题讨论】:
标签: java
这实际上取决于您使用的工具。 @NotNull 注释实际上并没有做 任何事情。实际上,there are several different @NotNull annotations 由不同的库提供。除了表明程序员的意图之外,它们都没有自己做任何事情。
要让注解做任何事情,您需要将它与处理注解的工具结合起来(无论是在编译时还是在运行时)并对您的代码或数据应用一些验证。例如:
即使没有工具,我会说是的,这些注释对于表明意图很有用。如果注释变得不真实,您可以随时删除注释。
在您的情况下,对于代码库的所有贡献者来说,使用诸如 IntelliJ IDEA 之类的工具来检查编译时是否符合这些注释,这听起来是个好主意。这将帮助您避免您描述的开发人员错误类型。
【讨论】:
据我所知,全球没有强制标准来使用这些类型的注释。在编写公共 API 时使用它们是有意义的,但这是特定于项目的。
无论如何,如果这有助于提高代码的清晰度和可读性,请随意在您的项目中这样做。
使用带有注释的 javadocs 并不是一种反模式。
此外,如果您正在考虑警告您的方法的用户它不应该返回null,但有可能发生这种情况(因为您无法强制执行),您可能想查看Optional 类。
【讨论】:
是的,使用@NotNull 是个好习惯。 @NotNull 注解实际上是一个明确的契约,声明如下:
所以为了简单起见,这是一个很好的做法。
【讨论】: