gpt4 book ai didi

c# - 如果发生两件事中的任何一件,是否有更简洁的方法来实现通过的 bool 逻辑?

转载 作者:行者123 更新时间:2023-11-30 14:16:42 25 4
gpt4 key购买 nike

这种情况偶尔会发生在我身上,我总是以同样的方式解决它,然后希望有一种更简洁的方法。

我首先调用相关实用函数,然后调用更新。

SynchA();
SynchB();
UpdateLastTime();

然后我添加复选框,这样我就有了:

if(synchA.Checked)
{
SynchA();
}
if(synchB.Checked)
{
SynchB();
}

但是现在我只想调用一个或两个执行的 UpdateLastTime(),所以我总是以:

bool synchHappened = false;
if(synchA.Checked)
{
SynchA();
synchHappened = true;
}
if(synchB.Checked)
{
SynchB();
synchHappened = true;
}
if(synchHappened)
{
UpdateLastTime();
}

最后一步总是困扰我,因为我将这个 bool 值扩展到三个逻辑分支。

对于我可以使用的上述逻辑/场景,是否有一些明显更好的方法?

最佳答案

主要目标是 - 每次逻辑发生变化时 - 代码应至少受到影响。因此,您必须构建一次这样的东西,然后它就会为您工作。

在您的具体情况下,我建议 Keep It Simple (没有 Strategy Pattern 等等),所以将开关逻辑提取并封装到属性中。因此,每次需求发生变化时,您都必须更新特定开关的逻辑或主逻辑本身。

封装规则的开关:

bool IsUpdateLastTime
{
get
{
// logic here even can be fully or partially injected
// as Func<bool>
return this.IsSyncA || this.IsSyncB;
}
}

bool IsSyncA { get { return synchA.Checked; } }
bool IsSyncB { get { return synchB.Checked; } }

主要逻辑:

if (this.IsUpdateLastTime)
{
this.UpdateLastTime();
}

关于c# - 如果发生两件事中的任何一件,是否有更简洁的方法来实现通过的 bool 逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7047586/

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