是否可以使用带有真假键的对象或逻辑运算符而不是单个对象,否则会降低圈复杂度?

问题描述 投票:0回答:1

因此,我目前正在学习JavaScript,而正在教我目前正在观看的课程的讲师不断谈论降低循环复杂性。他使用了一些我无法理解的技巧。我想我理解为什么将switch语句替换为map会降低循环复杂性的原因-从许多可能的情况来看,只有一种。但是,他一直在做以下类似的事情来降低圈复杂度:

if (condition) {
    arr.push(element);
} else {
    arr.pop();
}

成为:

const actionsMap = {true: "push", false: "pop"};    
arr[actionsMap[condition]](element);

我更喜欢第二个,但是它如何降低圈复杂度?现在仍然有两种情况只能以另一种方式调用。如果这确实降低了圈复杂度,是否可以将每个键替换为具有真假键的映射以降低圈复杂度?他还使用||和&&来降低循环复杂度,但我已经将它们列为循环复杂度的一部分。如何降低圈复杂度?在相同条件下,它不只是形状不同吗?

编辑:我确实意识到有些switch语句不能轻易被map取代。感谢您指出降低的可维护性,但是我的问题是:降低复杂度在这里如何工作?为什么actionMap比if更好。这不是条件吗?另外,逻辑运算符如何降低复杂度?

return (a>5 && a) || a-1;

就圈复杂度而言,这比以下哪一项更好:

if (a>5) return a;
else return a-1;

我知道这些示例不是生产质量代码,但是它们很好地说明了我的观点。

javascript object logical-operators cyclomatic-complexity
1个回答
0
投票

IMO,作为开发人员,您的首要任务是编写以下代码:

  • 作品
  • 对其他人来说很容易理解。

如果您的项目像第二个示例一样充满了代码片段,那么下一个要维护它的人将会遇到很多困难。这很好地演示了如何使用替代模式来实现相同的结果,但是对我来说,替换简单的if / else实在是太过分了。

© www.soinside.com 2019 - 2024. All rights reserved.