V8009. Two or more 'case' branches perform the same actions.
Анализатор обнаружил ситуацию, когда в конструкции switch разные метки case содержат одинаковые фрагменты кода. Это может привести к тому, что часть логики программы не будет работать.
Рассмотрим пример:
switch msg {
case "start":
Start()
case "stop":
Start()
}
В данном случае, для обоих case'ов выполняются одни и те же действия. Исправить код можно следующим образом:
switch msg {
case "start":
Start()
case "stop":
Stop()
}
Однако иногда одинаковые тела case применяются намеренно, но это может привести к неоднозначности в коде.
Рассмотрим пример:
switch msg {
case "start":
Start()
case "begin":
Start()
default:
Stop()
}
В этом примере для case'а start и begin выполняется один и тот же код. Но в последствии другим разработчикам может быть не понятно ошибка это или нет.
Сделать код понятнее можно следующим образом:
switch msg {
case "start", "begin":
Start()
default:
Stop()
}