当前位置:  开发笔记 > 编程语言 > 正文

我应该从返回null的函数返回null或将"null object"模式应用于函数吗?

如何解决《我应该从返回null的函数返回null或将"nullobject"模式应用于函数吗?》经验,为你挑选了2个好方法。

假设您有一个返回日期的函数:

Date myFunc(paramA, paramB){
   //conditionally return a date?
}

null从这个函数返回是否合适?这看起来很难看,因为它迫使客户检查null.

"空对象"模式是解决此问题的实现模式.
我不是null对象模式的忠实粉丝,但是,总是返回一个列表是有意义的,即使它是空的,而不是返回null.
但是,在Java中,一个空日期将被清除并具有1970年.

这里最好的实施模式是什么?



1> asterite..:

空对象模式不适用于您要执行的操作.该模式是关于创建一个在其实现中没有功能的对象,您可以将其传递给需要对象不为null的给定函数.一个例子是Eclipse 中的NullProgressMonitor,它是IProgressMonitor的空实现.

如果你返回一个"空"日期,比如1970年,你的客户仍然需要通过查看它是否为1970来检查它是否为"空".如果它们不存在,则会发生错误行为.但是,如果返回null,它们的代码将快速失败,并且它们将知道它们应该检查null.此外,1970年可能是一个有效的日期.

您应该记录您的方法可能返回null,就是这样.



2> GavinCattell..:

null是完全可以接受的.但是,如果要在错误上返回null,请考虑抛出异常.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有