375
submitted 2 years ago* (last edited 2 years ago) by AlmightySnoo@lemmy.world to c/programmerhumor@lemmy.ml
you are viewing a single comment's thread
view the rest of the comments
[-] Serdan@lemm.ee 18 points 2 years ago

Why?

It's perfectly readable.

[-] lowleveldata@programming.dev 40 points 2 years ago

It is sort of readable. A switch is "perfectly" readable for switching.

[-] rikudou@lemmings.world 3 points 2 years ago

Match is even better, short and sweet.

[-] Serdan@lemm.ee 2 points 2 years ago

Ternary expressions aren't switches though

[-] Kryomaani@sopuli.xyz 19 points 2 years ago

Which is exactly why you shouldn't be using them in a situation that clearly calls for a switch.

[-] Serdan@lemm.ee 5 points 2 years ago* (last edited 2 years ago)

In the given example I'd probably use a switch / match expression, but ternaries are usually more flexible than switches and I don't think it's an issue to write a nested ternary instead of if else statements.

[-] lowleveldata@programming.dev 4 points 2 years ago* (last edited 2 years ago)

ternaries are usually more flexible than switches

Which is bad for readability because the reader need to manually compute it to see whether it's doing simple switching or not. Also it adds the question of "Why did the author use a nested ternary instead of a switch? Was it meant to do more but it got left out unintentionally?"

[-] Serdan@lemm.ee 3 points 2 years ago

Yes, you need to read code to understand it. If else statements can also do the job of a switch, so the exact same argument applies.

[-] lowleveldata@programming.dev 3 points 2 years ago

The point is I don't need to read a switch statement to know that it is a switch

[-] deaf_fish@lemm.ee 1 points 2 years ago

There is usually a safer and more readable way to do what you want to do by chaining ternaries in most languages.

[-] Serdan@lemm.ee 4 points 2 years ago
[-] deaf_fish@lemm.ee 2 points 2 years ago* (last edited 2 years ago)

Well, if you assume ternary operations work the same in PHP as in c and attempted to write the code demoed by this meme. You would end up with unexpected behavior. Maybe I should have said unexpected behavior instead of unsafe behavior.

[-] Serdan@lemm.ee 2 points 2 years ago

PHP is the only language in existence with a left associative ternary operator. Ignoring PHP, the operator has worked exactly the same way for decades. And even PHP has now fixed the operator.

I don't think it's reasonable to avoid a very commonly supported pattern just because a single badly designed language implemented it wrong.

[-] deaf_fish@lemm.ee 2 points 2 years ago

Okay, even if I give you the unexpected behavior point. The readability problem remains. Switch statements or tables will work just fine and are easier to read.

To be clear, I am fine with single ternary operations. I think nested ternary operations are harder to read and follow.

[-] Serdan@lemm.ee 1 points 2 years ago

I agree you should use a switch where applicable, but ternaries are the expression equivalent of if-else statements. If I have two conditions and a default, and each branch simply evaluates to a value of the same type, I'll probably just use a ternary.

this post was submitted on 14 Jul 2023
375 points (100.0% liked)

Programmer Humor

37475 readers
151 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 6 years ago
MODERATORS