DEV Community

Invert your ifs!

Sergiu Mureşan on August 31, 2018

You've all seen the literal side mountain of code, here's a refresh: if (candies.length > 0) { if (store.isOpen()) { if (store.al...
Collapse
 
rafalpienkowski profile image
Rafal Pienkowski

I used to call such a code constructions pyramids.

pyramid

They are so stable like on the picture above.

Collapse
 
seraphicrav profile image
Ravaka Razafimanantsoa

The true term is actually called guard clause : medium.com/@scadge/if-statements-d...

And as we don't nest conditions, it is not a pyramid, it is flat ;)

Collapse
 
rafalpienkowski profile image
Rafal Pienkowski

That's true. I’m familiar with the term ”guard clause”. It’s a part of defending coding style :) To be clear, I have nothing against guard clauses, I use them very often, sometimes I extract them to separate class to split validation logic into a separate piece of code. To keep the code clean, we can't nest if statements. As you said ”flat” construction is not bad, but the pyramid is, in my opinion, the pure evil.

Collapse
 
seraphicrav profile image
Ravaka Razafimanantsoa

Agree at 100%

This is my coding style too.

Collapse
 
cristinasolana profile image
Cristina Solana

It isn't more code. Same amount of lines actually. And way more readable. :)

Collapse
 
codevault profile image
Sergiu Mureşan

Hah! Good catch. Did not even notice. Maybe because of the added return statements.

Collapse
 
samdoj profile image
Jodde

Great article! Sometimes making compact code isn't the best strategy.

Collapse
 
codevault profile image
Sergiu Mureşan • Edited

Thank you!

My opinion is that less code = less headaches later on with some exceptions like this one. Of course, don't need to make it as compact as possible until everything is crammed inside one line. Where you can, cut quite a few lines of code.