gpt4 book ai didi

c# - 要从工厂返回 "manual override"值,是检查 null 还是 bool 开关更好?

转载 作者:行者123 更新时间:2023-11-30 12:11:02 26 4
gpt4 key购买 nike

假设我们有这样的方法

public static IThing getTheThing() {
return internalThingGetter();
}

并且我们希望出于调试或单元测试的目的,引入一种轻量级策略来手动覆盖它。

private static IThing _thingManualOverride;

public static IThing getTheThing() {
if (/*some condition*/)
return _thingManualOverride;
else
return internalThingGetter();
}

是检查 _thingManualOverride != null 还是引入一个新的 bool 值并检查(例如 _shouldOverride)更好?

或者,这里有没有更坚实的模式可以使用?

编辑:要满足的一些目标:

  • 假设保持界面很重要。许多代码使用此静态方法,更改它是一个不错的目标,但代价高昂。
  • 这两项检查都是“正确的”,因为如果覆盖为 null,我们可以安全地假设默认类(class)是正确的。

最佳答案

如果选择 _thingManualOverride != null。您可以检查其他字段,假设一个名为“_IsThingManualOverrideSet”的 bool 值,但由于程序员的错误,他们可能会给出冲突的值:

_thingManualOverride = null;
_IsThingManualOverrideSet = true; // <-- oops!

所以检查值本身是最好的方法。

关于c# - 要从工厂返回 "manual override"值,是检查 null 还是 bool 开关更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16320479/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com