我正在重构一个大类,该类在各处都对 null 进行了大量检查,以使用 null 对象模式。到目前为止,这几乎是一个平稳的变化,但我对最终结果有几个问题,我想知道是否有更好或不同的方法,甚至回到原来的方式。
最大的问题是我有以下代码:
IMyObject myObject = GetMyObject();
if(myObject != null && !myObject.BooleanProperty)
DoSomething();
如您所见,我可能会从此条件中删除空检查,但我有一个布尔属性,如果设置为默认值,它将执行一段代码。如果我总是返回 true,我可能会引入一些难以发现和消除的细微错误。
另一个问题是我不得不像这样从 null 修改检查:
if(myObject.GetType() != typeof(MyNullObject))
return false;
DoSomething();
这简直丑陋,因为现在我必须检查类型,而不是只检查 null。这种情况在类中发生了 3 次,因为我没有返回对象的属性之一或执行其方法之一,我必须进行此检查。
最后,该对象有几个不可为空的 DateTime 属性,架构师不希望它们可以为空。同样,通过将 MinDate 值设为默认值,一些讨厌的错误可能会爬入代码中。
所以你有它。这是一个空对象模式比散落在各处的意大利面条空检查更糟糕的情况吗?有没有更好的方法来实现这一点?
感谢您的回答。