
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
64 lines
1.2 KiB
Plaintext
64 lines
1.2 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Since Java 7, ``++String++``s can be used as ``++switch++`` arguments. So when a single ``++String++`` is tested against three or more values in an ``++if++``/``++else if++`` structure, it should be converted to a switch instead for greater readability.
|
|
|
|
|
|
*Note* that this rule is automatically disabled when the project's ``++sonar.java.source++`` is lower than ``++7++``.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,java]
|
|
----
|
|
if ("red".equals(choice)) { // Noncompliant
|
|
dispenseRed();
|
|
} else if ("blue".equals(choice)) {
|
|
dispenseBlue();
|
|
} else if ("yellow".equals(choice)) {
|
|
dispenseYellow();
|
|
} else {
|
|
promptUser();
|
|
}
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,java]
|
|
----
|
|
switch(choice) {
|
|
case "Red":
|
|
dispenseRed();
|
|
break;
|
|
case "Blue":
|
|
dispenseBlue():
|
|
break;
|
|
case "Yellow":
|
|
dispenseYellow();
|
|
break;
|
|
default:
|
|
promptUser();
|
|
break;
|
|
}
|
|
----
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Convert this "if/else if" structure into a "switch".
|
|
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
=== is related to: S2145
|
|
|
|
endif::env-github,rspecator-view[]
|