Every so often I open a PR and see something like this:
deployFeature(flag, true, false, true);
I run into it more often than I’d like.
Not because it’s complicated. Just because I have no idea what I’m looking at.
So I click into the function definition, scroll a bit, lose my place, jump back, re-read the line…and only then does it click.
Tiny interruption. Still annoying every time.
I’m not reading code anymore, I’m decoding it
Here’s a simpler one:
createUser(user, true, false);
What does that mean? Is the user an admin? Are we sending a welcome email, or skipping validation?
I don’t know. And at that point I’m not really reading code anymore, I’m decoding it.
There’s a name for this (“flag arguments,” sometimes “boolean blindness”), but honestly I don’t really need the term to feel the problem.
I’ve definitely written this before:
createUser(user, true, false); // isAdmin, sendWelcomeEmail
Which kind of gives the whole thing away.…