﻿# V3139\. Two or more case\-branches perform the same actions\.

The analyzer has detected that multiple case clauses of the switch statement contain the same code\. It may often indicate redundant code and can be improved by merging the labels\. Identical code fragments may also be copy\-paste errors\.

The example of a redundant code:

```cpp
switch (switcher) 
{
  case 0: Console.Write("0"); return;
  case 1: Console.Write("0"); return;
  default: Console.Write("default"); return;
}
```

Different `switcher` values may trigger the same actions, so the code can be simplified:

```cpp
switch (switcher) 
{
  case 0:
  case 1: Console.Write("0"); return;
  default: Console.Write("default"); return;
}
```

Using the pattern matching in `case` disable grouping expressions under one statement\.

```cpp
private static void ShowCollectionInformation(object coll, bool cond)
{
  switch (coll)
  {
    case Array arr:
      if(cond)
      {
        Console.WriteLine (arr.ToString());
      }
      break;
    case IEnumerable<int> arr:
      if(cond)
      {
        Console.WriteLine (arr.ToString());
      }
      break;
   }
}
```

To facilitate modifying and debugging in the future, move the code into a separate method\.

The next example, taken from a real application, demonstrates an error:

```cpp
switch (status.BuildStatus)
{
  case IntegrationStatus.Success:
    snapshot.Status = ItemBuildStatus.CompletedSuccess;
    break;
  case IntegrationStatus.Exception:
  case IntegrationStatus.Failure:
    snapshot.Status = ItemBuildStatus.CompletedSuccess;
    break;
}
```

The status assignment is incorrect: the `ItemBuildStatus` enumeration contains `CompletedFailed` that should be assigned in the `IntegrationStatus.Failure` case when an error or exception occurs\.

The fixed code:

```cpp
switch (status.BuildStatus)
{
  case IntegrationStatus.Success:
    snapshot.Status = ItemBuildStatus.CompletedSuccess;
    break;
  case IntegrationStatus.Exception:
  case IntegrationStatus.Failure:
    snapshot.Status = ItemBuildStatus. CompletedFailed;
    break;
}
```