Avoid ‘if … else if’ constructs with missing final ‘else’ clauses

Why you should care

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 default clause in a switch statement.

How we detect

CAST Highlight counts one occurrence each time if-else if statements are not ended by else clause, except when all branches of an if-else if end with return, the code that comes after the if implicitly behaves as if it was in an else clause.

Bad Code

if x == 0 {
	doSomething()
} else if x == 1 {
	doSomethingElse()
}

Good Code

if x == 0 {
	doSomething()
} else if x == 1 {
	doSomethingElse()
} else {
	return errors.New("unsupported int")
}
 
if x == 0 {
	doSomething()
	return 1
} else if x == 1 {
	return 2
} else if {
	return errors.New("unsupported int")
}

References

5362

About CAST and Highlight’s Code Insights

Over the last 25 years, CAST has leveraged unique knowledge on software quality measurement by analyzing thousands of applications and billions of lines of code. Based on this experience and community standards on programming best practices, Highlight implements hundreds of code insights across 15+ technologies to calculate health factors of a software.