org.sonar.l10n.java.rules.squid.S1871.html Maven / Gradle / Ivy
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