我已经阅读了这个主题:避免!= null语句,但我没有看到好处.
如果返回空数组,则需要检查"实数"数组的位置以及空数组的位置.
getName() != null您必须使用,而不是使用类似的代码getName().length > 0.作为一个例子,我正在研究项目,我需要用少量的归档器来压缩一些数据,并决定选择尺寸最小的压缩数据.如果我从归档器"compress"方法返回null,我需要检查返回的值是否为null.如果我决定返回一个空数组,那么我还需要检查它是否为空.
我对吗?
Ale*_*ing 11
使用空集合或"空白"操作而不是null的主要优点是,大多数情况下,此类对象仍然可以在代码中工作而无需进一步修改.从null本质上讲,价值更容易出错.
请使用以下代码,例如:
String[] names = data.getNames();
if (names != null) {
for (String name : names) {
// Do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
检查null是必需的,否则您将获得NPE.使用标准for循环不能解决问题.在另一方面,如果你知道你将总是得到某种类型的数组,你的代码将工作细,没有额外的检查.如果数组为空,则循环将不会运行.问题解决了.
对于实现某种形式的操作的代码也是如此.另一个例子:
Action myAction = data.getActionToRun();
if (myAction != null) {
myAction.run();
}
Run Code Online (Sandbox Code Playgroud)
再次,你需要null检查.如果保证动作存在,那么你可以随时调用action.run()没有副作用,但空白动作不会做任何事情.就这么简单.
在许多情况下,null如果修改方法返回方式,则可以简单地丢弃检查,从而导致更简单易懂的代码.在某些情况下,返回null是正确的选择(例如,从一组键和值中获取对象),因为没有默认的"无动作"值.但是null表明缺少一个值,它需要额外的处理是接收器.使用空白,无动作,非空对象允许数据对象处理错误.这是很好的封装.这是很好的编程.它只是有效.™
最后,返回null肯定不是处理错误的好方法.如果事情在你的代码出错应该永远不会出错,除非你是程序员做了一个编程错误,使用assertS或异常.那些都是失败的.不要将其null用作失败案例,将其用作简单的缺乏值.
空数组有时会返回更自然的对象.考虑一下这样的代码:
String [] elements = getElements();
for (String element : elements)
System.out.println(element);
Run Code Online (Sandbox Code Playgroud)
如果返回一个空数组(即没有元素),则不会打印任何内容,代码将正确执行.但是,如果getElements()返回null,您将获得空指针异常.为了防止它,你需要添加更多的代码,这使事情变得更加复杂.返回一个空数组可以在没有附加代码的情况下实现所需的行为.
| 归档时间: |
|
| 查看次数: |
433 次 |
| 最近记录: |