对于公共API,应该对所有输入参数进行空检查吗?

时间:2017-06-28 11:42:03

标签: java android api native

我有一个向多个用户公开的API。

我应该检查API中null的所有输入参数吗?

或者开发人员有责任不发送null个对象吗?

或者API设计师的责任只是在Java文档中提及不发送null个对象?

这是什么要求?

2 个答案:

答案 0 :(得分:3)

关于返回null

基于事实的答案是:尽可能避免返回null!

Java8引入Optional;其他策略是返回一个空集合(例如,而不是null集合)。

返回 null始终是朝向NullPointerException的第一步 - 因此您希望避免它。但是,当然,这并不是免费的;有时你需要很多思考才能找到一个好的解决方案。

关于空输入参数

检查输入......这分别取决于您的用户表达的要求。

我的"个人"在这里:使用Objects.requireNonNull()立即检查所有传入参数是否应为非空。并在你的javadoc中明确记录:

@throws NullPointerException if any of the provided arguments is null

你知道,当你的代码在任何参数上调用方法时,代码都会抛出。因此,提前检查是更好 - 而不是让你的代码执行(很多)事情。

换句话说:确保您的代码"失败"尽可能快!

答案 1 :(得分:0)

获取 null 值不仅仅是因为编程习惯不好,而且由于网络问题缓慢或依赖方法通信也可能。

因此,在这些场景之间,我们不能说特定的API将不再获得空值。

这就是为什么我们需要首先检查空值并防止应用程序而不是由此产生的错误并保存路径才能工作。