All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.l10n.java.rules.squid.S1871.html Maven / Gradle / Ivy

The newest version!

Having two cases in the same switch statement or branches in the same if structure with the same implementation is at best duplicate code, and at worst a coding error. If the same logic is truly needed for both instances, then they should be combined, for an if structure or one should fall through to the other for a switch.

Noncompliant Code Example

switch (i) {
  case 1: 
    doSomething();
    break;
  case 2: 
    doSomethingDifferent();
    break;
  case 3:  // Noncompliant; duplicates case 1's implementation
    doSomething(); 
    break;
  default: 
    doTheRest();
}

if (a >= 0 && a < 10) {
  doTheThing();
else if (a >= 10 && a < 20) {
  doTheOtherThing();
}
else if (a >= 20 && a < 50) {
  doTheThing();  // Noncompliant; duplicates first condition
}
else {
  doTheRest(); 
}

Compliant Solution

switch (i) {
  case 1: 
  case 3:
    doSomething();
    break;
  case 2: 
    doSomethingDifferent();
    break;
  default: 
    doTheRest();
}

if ((a >= 0 && a < 10) || (a >= 20 && a < 50)) {
  doTheThing();
else if (a >= 10 && a < 20) {
  doTheOtherThing();
}
else {
  doTheRest(); 
}

or

switch (i) {
  case 1: 
    doSomething();
    break;
  case 2: 
    doSomethingDifferent();
    break;
  case 3:
    doThirdThing(); 
    break;
  default: 
    doTheRest();
}

if (a >= 0 && a < 10) {
  doTheThing();
else if (a >= 10 && a < 20) {
  doTheOtherThing();
}
else if (a >= 20 && a < 50) {
  doTheThirdThing();
}
else {
  doTheRest(); 
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy