DEV Community

Discussion on: βœ”||🀒 Commit or Vomit | nested ternary operator

Collapse
 
khorne07 profile image
Khorne07

The only reason people keep complaining about the readability of nested ternary operators is because they don't use it enough. This example looks quite readable to me and I'll always prefer this way over the verbosity of if - else blocks.

Collapse
 
jmdejager profile image
🐀πŸ₯‡ Jasper de Jager

I can understand that but you don't write code only for yourself so it is interesting to see what others think. I'd rather not use it if it is not common enough.

Collapse
 
khorne07 profile image
Khorne07

Fair though, but maybe if more people were using it, it wouldn't have so many people hating it. In my case when I started learning Js I didn't like it too much, I found it unnecessary since you can go with if - else blocks like in other languajes (I came to learn js from C, C++ and C#). But after facing real world codes using this sintax I were forced to learn it and understand it well so now is very natural for me to see and work with nested ternaries, and ended up loving them.

Thread Thread
 
khorne07 profile image
Khorne07

So taking my self by guide, when someone says nested ternaries are hard to understand or using them decrese code readability, my conclusion is that they haven't used ternaries enough, or still don't have enough experience in js, so facing them would be a good way to improve their logic skills and learn a new concise way of write conditional statements blocks

Thread Thread
 
jmdejager profile image
🐀πŸ₯‡ Jasper de Jager

Yes and that's one thing I'm trying to find out with these series ☺️ is it something That's not ok or just something for the more experienced developer. Your comments help a lot!! 😎

Thread Thread
 
tominflux profile image
Tom

It's really not about one's ability to read ternaries. It's about code writing/analysing efficiency. Even a senior dev will be disadvantaged by encountering a complex nested ternary because the context is not explicit and they have to spend some time analysing it. These kind of ternaries always come with a large cognitive load. Always value being concise over ~quick~ readability, and your codebase will become a nightmare to maintain.

Thread Thread
 
jmdejager profile image
🐀πŸ₯‡ Jasper de Jager

I totally agree!

Thread Thread
 
khorne07 profile image
Khorne07

Well that actually depends on the situation. Ternaries are not to include on every conditional situation, that is a horror πŸ˜‚. I'm just saying that I rather use a nested ternary over an if-else block. If there is no need to use an if-else block, then there shouldn't been any nested ternary there either.

Collapse
 
tominflux profile image
Tom

If you stumble across something like this in a large codebase when you need to get something implemented/fixed quickly, it's a bloody nightmare.

Takes ages to grasp the context of what this kind of code is trying to do. It's always worth putting each sub-condition in a named boolean constant.
e.g. const doesProfileExist = ...

And then using a fail-fast if statement straight after.
e.g. if (!doesProfileExist) return x