Очень простой рефакторинг - удалите все условные логи c, которые у вас есть, и извлеките каждый фрагмент как отдельную функцию в карту. Поскольку вы выполняете только одну ветку каждый раз, в зависимости от step
, вы можете сделать это значение ключом и выбрать то, что должно быть выполнено. Затем вы можете предоставить запасной вариант для случаев, когда нет ничего, что соответствует step
.
Теперь сложность цикломати c равна 2, поскольку ветки кода располагаются только в одном месте - либо вы найдете соответствующий обработчик для step
, либо нет. Кроме того, ветвление на шаге 3 теперь является совершенно отдельной функцией, поэтому его не нужно считать частью testFunc
function testFunc() {
var step = getModel('step');
var steps = {
1: function() {
this.editTask(); //calling some function
this.updateStep(0);
return true;
},
2: function() {
this.initTask; //some other function
return true;
},
3: function() {
this.name === 'add' ? this.add() : this.edit();
return true;
},
default: function() {
return false;
}
};
var fn = steps[step] || steps.default;
return fn();
}