我偶然碰到了这篇文章:https://github.com/google/guice/wiki/UseNullable
要消除代码库中的NullPointerExceptions,必须遵守空引用的规定。我们通过遵循并强制执行一条简单的规则来取得成功:除非明确指定,否则每个参数都是非空的。
这是用剪切训练完成的,还是以某种方式自动化?不幸的是,它似乎是前者?有没有办法让我的代码库中的空变量自动快速失败,除非它们标有@Nullable
?
答案 0 :(得分:2)
这是自动化的,而不是纯粹的纪律。
正如Louis Wasserman所说,Google的测试代码对标记为@Nullable
的参数有特殊处理。
在测试期间或运行时快速失败可能会很好,但在编译时了解问题或获得编译时保证在运行时不会发生错误会更好。< / p>
Google之前使用FindBugs来帮助在编译时找到空指针异常,但Google现在已基本放弃了FindBugs,因为很难将其与Google构建系统集成。
Google上的数十个项目使用Checker Framework Nullness Checker在编译时静态查找空指针错误。 Nullness Checker在Google Collections库中有found errors,该库是Guava的一部分。
此信息的来源是在Google上使用编程工具的朋友。