c# – 如果发生两种情况中的任何一种,那么实现布尔逻辑的更简洁
发布时间:2020-12-16 01:46:33 所属栏目:百科 来源:网络整理
导读:这种情况每隔一段时间就会发生在我身上,我总是以同样的方式解决它,然后希望采用更清洁的方式. 我开始调用相关的实用程序函数,然后是更新调用. SynchA();SynchB();UpdateLastTime(); 然后我添加复选框,所以我有: if(synchA.Checked){ SynchA();}if(synchB.Ch
这种情况每隔一段时间就会发生在我身上,我总是以同样的方式解决它,然后希望采用更清洁的方式.
我开始调用相关的实用程序函数,然后是更新调用. 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(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |