Как получить низкую цикломатическую сложность с помощью операторов switch?

У меня есть функция, которая принимает ввод и выполняет случай переключения на основе определенного входного свойства. Итак, сама функция довольно проста, как вы можете видеть ниже.

function handleMessage(message) {
  switch (message.type) {
    case "a":
      a(message);
      break;
    case "b":
      b(message);
      break;
    case "c":
      c(message);
      break;
    case "d":
      d(message);
      break;
    case "e":
      e(message);
      break;
  }
}

Но если я проверю сложность этой функции, я получу 12, что, по словам VSCode, слишком много (согласно некоторым рекомендациям, найденным в Интернете, максимальное значение для функции должно быть 10). Пока я добавляю случаи в оператор switch, сложность, конечно, будет возрастать, но суть в том, могу ли я что-нибудь сделать, чтобы уменьшить это значение? Или я должен просто смириться с этим?


person Jimi    schedule 21.01.2020    source источник
comment
Я видел это раньше, но не могу найти ответ. Интересный подход выглядит примерно так: словарь, в котором ключи — это случаи переключения, а значения — функции, обрабатываемые случаем, но в этот момент я могу потерять некоторую читабельность и удобство обслуживания, которые также важны.   -  person Jimi    schedule 21.01.2020
comment
Итак, я реализовал этот подход, и он действительно значительно уменьшил сложность (теперь она составляет 2). Но что, если вы хотите обработать регистр default внутри словаря (если это вообще возможно)?   -  person Jimi    schedule 21.01.2020