关于返回 Null 值的问题
我总感觉一个方法返回null值有问题。 当读了Misko Hevery关于how to think about OO的博客文章后,又让我想起这个问题。
我感觉返回null值是有问题的,它大量的被使用在一个方法有不同的返回类型时。 简单的用谷歌搜索一下“returning null”,你就会发现有建议把返回类型做成一个null对象。 返回一个Null对象在某些情况下是合适的,但并不适合当你需要向客户端传送两种不同的东西的情形。
用Misko重构的一段代码来说明这个问题。 他重构的是一段登录代码(我非常喜欢他的过程),这段代码大概是这个样子:
Cookie login(Ldap ldap) { if ( ldap.auth(user, password) ) return new Cookie(user); return null; }
从这段代码,可以看出两种情况(从结构上讲)
- 如果认证通过, 客户端会被通知验证成功, 生成一个新的Cookie
- 如果认证失败, 则通过返回的null值通知客户端
客户端的方法应该是什么样的?
public void...