Задачка по Cyclomatic complexity

Photo Credit: WeGraphics

Задачка по Cyclomatic complexity

В репозитории JSHint наткнулся на интересную задачку.

Даны две фукции:

function(someVal) {
    switch (someVal) {
        case 1:
        case 2:
        case 3:
            doSomething();
            break;
        default:
            doSomethingElse();
            break;
    }
}
function(someVal) {
    if (someVal === 1 || someVal === 2 || someVal === 3) {
        doSomething();
    } else {
        doSomethingElse();
    }
}

JSHint говорит, что СС для данных функций равны 4 и 2 соответственно. Задача - выяснить истину и поправить библиотеку.

С первого взгляда, все казалось довольно просто. СС для обеих функций должно равняться 2. Но парень из Германии усомнился в решении. В пример привел статью и PDF с примерами на фортране. И говорит парень, что все должно быть по 4 и рассчет данной циферки not always human intuitive.

Хорошо. Тут либо читать статью, либо приводить другие аргументы. Статью читать не хотелось. Решил Я прогнать данные функции через чекстайл. Он то для Java, а она то Enterprise.

Интересные результаты:

Чекстайл полностью согласен с Германией. Придется читать статью.