Switch Statements vs if-else statements
2 min readApr 1, 2021
For today’s short article, I’ll be going over some good rules of thumb when to use switch statements over if else statements and vice versa. While these may not be universally hard rules to follow for every coding project, its important to know the pros and cons of using switch statements and if-else statements.
Switch Statements
- Good to use if there is only 1 condition to compare against. In the above example, the code only needs to compare against the
powerUpID
variable, so it would make using the switch statement here ideal. - Can optionally include a
default
case where if thepowerUpID
doesn’t meet any of the set cases above, it will have a case to run default logic under. Since I setuppowerUpID
to be an enum of typePowerUpType
, I don’t need to worry about an unsupported case as they will all be enumerated through thePowerUpType
enum.
- Must include the
break
keyword after finishing a case to prevent the compiler from checking all other cases. - Switch statements can support multiple lines under the case block and right before the
break
keyword but the code can become harder to read. In my opinion, this is where if-else statements shine as the brackets help separate blocks of logic out into more readable chunks. Another option would be to group the blocks of logic into its own helper function so that the case block only has 1 line followed by thebreak
keyword.
if-else Statements
- Good to use if there are more than 1 conditions that need to be fulfilled via && operator (AND) or the || operator (OR).
- Similar to how
break
keyword works,else
statement only runs if the previousif
statement is false. In other words, if the first if statement in the above example is true, the compiler will skip all otherelse if
statements. - A drawback of if-else statements is that you may have to compare against the same variable multiple times with different values. For example, writing down
if (powerUpID == PowerUpType.TRIPLE_SHOT)
andif (powerUpID == PowerUpType.SPEED_BOOST)
can become repetitive for the first half of the if statement and would be better suited to use a switch statement instead to avoid having to writeif(powerUpID ==
multiple times for different cases.
Thanks for reading! :)