C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c# – 如果发生两种情况中的任何一种,那么实现布尔逻辑的更简洁方法是什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这种情况每隔一段时间就会发生在我身上,我总是以同样的方式解决它,然后希望采用更清洁的方式.

我开始调用相关的实用程序函数,然后是更新调用.

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传播到三个逻辑分支.

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

解决方法

主要目标是 – 每次逻辑发生变化时 – 代码应至少受到影响.
所以你要构建一次这样的东西然后它会对你有用.

你的特定情况下,我会建议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# – 如果发生两种情况中的任何一种,那么实现布尔逻辑的更简洁方法是什么?全部内容,希望文章能够帮你解决c# – 如果发生两种情况中的任何一种,那么实现布尔逻辑的更简洁方法是什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。