gpt4 book ai didi

c++ - 如何改进逻辑以检查 4 个 bool 值是否匹配某些情况

转载 作者:IT老高 更新时间:2023-10-28 11:50:53 26 4
gpt4 key购买 nike

我有四个 bool 值:

bool bValue1;
bool bValue2;
bool bValue3;
bool bValue4;

可接受的值为:

         Scenario 1 | Scenario 2 | Scenario 3
bValue1: true | true | true
bValue2: true | true | false
bValue3: true | true | false
bValue4: true | false | false

因此,例如,这种情况是 Not Acceptable :

bValue1: false
bValue2: true
bValue3: true
bValue4: true

目前我想出了这个 if 语句来检测不良场景:

if(((bValue4 && (!bValue3 || !bValue2 || !bValue1)) ||
((bValue3 && (!bValue2 || !bValue1)) ||
(bValue2 && !bValue1) ||
(!bValue1 && !bValue2 && !bValue3 && !bValue4))
{
// There is some error
}

该语句逻辑可以改进/简化吗?

最佳答案

我的目标是可读性:你只有 3 个场景,用 3 个单独的 if 来处理它们:

bool valid = false;
if (bValue1 && bValue2 && bValue3 && bValue4)
valid = true; //scenario 1
else if (bValue1 && bValue2 && bValue3 && !bValue4)
valid = true; //scenario 2
else if (bValue1 && !bValue2 && !bValue3 && !bValue4)
valid = true; //scenario 3

易于阅读和调试,恕我直言。此外,您可以在处理 if 时分配一个变量 whichScenario

如果只有 3 个场景,我不会选择“如果前 3 个值是真的,我可以避免检查第四个值”这样的事情:这会让你的代码更难阅读和维护。

也许肯定不是一个优雅的解决方案,但在这种情况下是可以的:简单易读。

如果您的逻辑变得更复杂,请丢弃该代码并考虑使用更多内容来存储不同的可用场景(正如 Zladeck 所建议的那样)。

我真的很喜欢 this answer 中给出的第一个建议: 易于阅读,不易出错,可维护

(几乎)跑题了:

我不会在 StackOverflow 上写很多答案。非常有趣的是,上述接受的答案是迄今为止我历史上最受赞赏的答案(在我认为之前从未有超过 5-10 次投票),而实际上并不是我通常认为的“正确”方法。

但简单往往是“正确的做法”,很多人似乎都这么认为,我应该比我想得更多:)

关于c++ - 如何改进逻辑以检查 4 个 bool 值是否匹配某些情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53591559/

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