Design patterns 空对象模式是否使调试更加复杂?
我想知道在某些情况下,空对象模式是否会使调试变得更加困难。例如,如果一个方法返回一个“空”对象而不是null,那么它不会抛出错误。就可靠、干净的代码而言,这很好,但这难道不意味着现在使用的是一个空对象,它基本上不做任何可能导致意外错误的事情吗。现在没有任何东西可以帮助程序员找到问题,而不是使用空异常 可以,因为如果null对象必须返回一个值(如示例中所示),那么您只是推迟了null问题,仍然需要检查null值 我发现null对象非常有用,因为满足两个条件Design patterns 空对象模式是否使调试更加复杂?,design-patterns,null,null-object-pattern,Design Patterns,Null,Null Object Pattern,我想知道在某些情况下,空对象模式是否会使调试变得更加困难。例如,如果一个方法返回一个“空”对象而不是null,那么它不会抛出错误。就可靠、干净的代码而言,这很好,但这难道不意味着现在使用的是一个空对象,它基本上不做任何可能导致意外错误的事情吗。现在没有任何东西可以帮助程序员找到问题,而不是使用空异常 可以,因为如果null对象必须返回一个值(如示例中所示),那么您只是推迟了null问题,仍然需要检查null值 我发现null对象非常有用,因为满足两个条件 您只调用没有返回值的方法 当没有价值的时
class Callback {
void onDoSomething(SomeArg someArg);
}
通常,在使用回调之前,必须进行空检查
if (callback != null) {
callback.onDoSomething(someArg);
}
使用空对象模式,您可以使回调的默认值为空对象,并避免代码其余部分中的空检查。锅炉铭牌代码越少,就越容易看到重要部件 @BCartolo某些语言(如Ruby)null是一个对象,您可以在其上调用nil?
method。如果您的语言不支持这一点,您可以在设计中将null表示为对象,并确保引用从不为null。