2

我想知道在某些情况下,空对象模式是否实际上会使调试变得更加困难。例如,如果一个方法返回一个“空”对象而不是 null,那么它不会抛出错误。这在可靠、干净的代码方面很好,但这是否意味着现在正在使用一个空对象,它基本上没有做任何可能导致意外错误的事情。现在没有什么可以帮助定位问题,而不是让程序员找到问题所在的空异常。

4

1 回答 1

2

,因为如果您的 null 对象必须返回一个值(如您的示例中所示),您只是推迟了 null 问题并且仍然需要检查 null 值。

我发现 null 对象在满足两个条件时非常有用。

  1. 您只是调用没有返回值的方法。
  2. 当没有价值时,您不会忽略操作。

一个简单的例子是回调。

class Callback {
   void onDoSomething(SomeArg someArg);
}

通常,您必须在使用回调之前进行空检查

if (callback != null) {
    callback.onDoSomething(someArg);
}

使用空对象模式,您可以将回调的默认值设为空对象,并避免在其余代码中进行空检查。更少的样板代码可以更容易地查看重要部分。

于 2017-03-31T15:09:02.480 回答