在这样的 javascript 代码中如何处理圈复杂度?

How procced cyclomatic complexity in such javascript code?

我的 javascript 中存在一些复杂性问题。看起来像:

 function mainFunction(scope, element) {
        var eventHandlerMap = {
            'firstEvent': firstEventHandler,
            'secondEvent': secondEventHandler,
            .....
        };

        function firstEventHandler(element) {
            if (element) {
                //some code
            } else {
                //some code
            }
        }
        function secondEventHandler(element) {
            //some code
        }
        //and other EventHandler functions
}

现在 mainFunction 的复杂度为 41,但我的声纳允许不超过 10。我不擅长 javascript,也不知道如何解决它。

计算复杂度的方式应由下一个插件版本更改(请参阅 https://jira.sonarsource.com/browse/SONARJS-729)。

为什么不将 firstEventHandler 和 secondEventHandler 移到 mainFunction 之外?

如果你想实现信息隐藏,你可以使用 ES6 类 或者使用模块模式而不是嵌套函数。