﻿# V7008\. Two or more 'case' branches perform the same actions\.

Анализатор обнаружил ситуацию, когда в инструкции switch разные метки case содержат одинаковые фрагменты кода\.

Такая ошибка может появиться, например, из\-за копирования кода\. Пример:

```cpp
switch (selector) {
  case "foo":
    res = foo;
    break;
  case "bar":
    res = bar;
    break;
  case "baz":
    res = bar;
    break;
}
```

Здесь в метке `"baz"` присваивается значение из переменной `bar` вместо `baz`\. Исправленный вариант:

```cpp
switch (selector) {
  case "foo":
    res = foo;
    break;
  case "bar":
    res = bar;
    break;
  case "baz":
    res = baz;
    break;
}
```

Часто это предупреждение также свидетельствует об избыточном коде, который можно улучшить объединением меток\. Пример с избыточным кодом:

```cpp
switch (selector) {
  case "fooX":
    res = foo;
    break;
  case "fooY":
    res = foo;
    break;
  case "barX":
    res = bar;
    break;
  case "barY":
    res = bar;
    break;
}
```

Здесь нет ошибки, но этот код можно сделать читабельнее и компактнее за счёт объединения меток `case`:

```cpp
switch (selector) {
  case "fooX":
  case "fooY":
    res = foo;
    break;
  case "barX":
  case "barY":
    res = bar;
    break;
}
```