如何降低长布尔表达式的复杂性?

How to reduce complexity of a long boolean expression?

我有一个布尔表达式来评估它很长,有很多不同的情况:

return (a && b && c) ||
(d && e && f) ||
...

这应该是 return 布尔值!

a、b、c、d、e、f为简单相等比较,均不相同。 这持续了 12 行,并给出了 44

的圈复杂度

我试图查看 Map 对象以降低复杂性,但没有找到方法。

我怎样才能降低这种表达式的复杂性?

您不能降低给定表达式的复杂性。

一种较慢的方法,但可能更结构化,是对表达式进行分组并使用 Array#some for the outer array and Array#every 对内部数组进行短路计算。

return [[a, b, c], [d, e, f]].some(a => a.every(Boolean));