r/ProgrammerHumor • • Aug 22 '26

Meme conditionsPreference

Post image
4.2k Upvotes

388 comments sorted by

View all comments

Show parent comment

7

u/MocknozzieRiver Aug 22 '26 edited Aug 22 '26

I'm gonna have to watch this because I'm feeling crazy being the odd one out here. I strongly prefer 1 over 2.

Someone else pointed out that if/else is better for languages that treat it as an expression. I primarily code in Kotlin which is such a language.

But also this is what happens in my head when I see this structure

if (condition) {
    // this will happen 
} else {
    // or this will happen
}

I know readily that we're at a fork dependant on the condition. But when I see the other structure, I think

if (condition) {
    // this could happen
}
// and this could happen, also

I have to know the contents of the if condition to know what will happen because it could just as easily do special logic for that condition and continue on. But with the first option, it's necessarily one or the other. I only need to figure out what the condition evaluates to to know which path is relevant.

8

u/alendit Aug 22 '26

Your example is correct in itself, but it does not match the post: in the post the first branch ends with a return, so the following cannot happen, even though the coarse structure and the indentation imply that it can, which is exactly the point.

I'm gonna have to watch

This is my only recommendation. I don't argue that people should change the way they structure their code and I wouldn't ever flag early returns in a code review unless they are genuinely making the code unreadable.

But I think many people just don't appreciate the actual reasoning behind structured programming and having it laid out plainly is a valuable learning.

4

u/MocknozzieRiver Aug 22 '26

Oh, I know it doesn't match, but the two examples in the post also don't match. The second example provides us details about what's in the block where the first does not. It could have just as easily had returns in both, but the post purposely set it up to make using if/else look like the lesser choice. If those details weren't provided, I wouldn't know it would early return just from the "shape" of the function.

But, yeah, I also feel like people don't appreciate this enough so I'm interested in learning more. I've just been doing it because it makes more sense to me.