rspec/rules/S126/scala/rule.adoc
2020-12-21 15:38:52 +01:00

33 lines
970 B
Plaintext

This rule applies whenever an `+if+` statement is followed by one or more `+else if+` statements; the final `+else if+` should be followed by an `+else+` statement.
The requirement for a final `+else+` statement is defensive programming.
The `+else+` statement should either take appropriate action or contain a suitable comment as to why no action is taken. This is consistent with the requirement to have a final `+case _+` clause in a `+match+`.
== Noncompliant Code Example
----
if (x == 0) {
doSomething
} else if (x == 1) {
doSomethingElse
}
----
== Compliant Solution
----
if (x == 0) {
doSomething
} else if (x == 1) {
doSomethingElse
} else {
throw new IllegalStateException
}
----
== Exceptions
When all branches of an `+if+`-`+else if+` end with `+return+`, `+break+` or `+throw+`, the code that comes after the `+if+` implicitly behaves as if it was in an `+else+` clause. This rule will therefore ignore that case.
include::../see.adoc[]