【发布时间】:2019-04-12 01:09:49
【问题描述】:
我有一个 if 语句变得有点麻烦。我想知道是否有更好的方法来处理多个类似的 if 语句,例如组合成一个或使用不同的条件语句,例如 while 或 do 循环。任何建议表示赞赏。
if (options.OpenCloseOverridesOptions != null && !options.OpenCloseOverridesOptions.AreEqual(OpenCloseOverridesOptions))
return false;
if (options.DeliveryOpenCloseOverridesOptions != null && !options.DeliveryOpenCloseOverridesOptions.AreEqual(DeliveryOpenCloseOverridesOptions))
return false;
if (options.PickupOpenCloseOverridesOptions != null && !options.PickupOpenCloseOverridesOptions.AreEqual(PickupOpenCloseOverridesOptions))
return false;
if (options.PickupServiceWindowOverridesOptions != null && !options.PickupServiceWindowOverridesOptions.AreEqual(PickupServiceWindowOverridesOptions))
return false;
if (options.DeliveryServiceWindowOverridesOptions != null && !options.DeliveryServiceWindowOverridesOptions.AreEqual(DeliveryServiceWindowOverridesOptions))
return false;
if (options.ServiceWindowOverridesOptions != null && !options.ServiceWindowOverridesOptions.AreEqual(ServiceWindowOverridesOptions))
return false;
if (options.LineItemsOptions != null && !options.LineItemsOptions.AreEqual(LineItemsOptions))
return false;
简而言之,我基本上是在检查一个对象是否为空,如果不是,则使用扩展方法来确定类似对象是否相等。 (我没有覆盖 isEquals 和 getHashCode )。如果对象为 null,我无法调用 areEquals 扩展方法,因此需要进行检查。
【问题讨论】:
-
为什么要重构。我觉得是这样的克莱尔
-
如果你有一个功能程序,你可以把它提交给codereview.stackexchange.com的人
-
另外,您可以使用 null 条件运算符 (
?.) 简化您的 null 检查。 -
有可能评估更多选项,所以我只是考虑长期的可读性和可维护性。此外,我已经很久没有使用堆栈了,显然,有一个 StackOverflow 用于代码审查......应该在那里代替吗?
-
好的 @BrootsWaymb 你回答了我的问题,因为我输入它......太棒了
标签: c# .net if-statement conditional