Booleans thought of dangerous | InfoWorld

Learn extra at:


perform saveUser(
  consumer: Consumer,
  emailOption: WelcomeEmailOption,
  verificationStatus: VerificationStatus
): void {
  if (emailOption === WelcomeEmailOption.Ship) {
    sendEmail(consumer.e mail, 'Welcome!');
  }
  if (verificationStatus === VerificationStatus.Verified) {
    consumer.verified = true;
  }
  // save consumer to database...
}

And you’ll name it like this:


saveUser(newUser, WelcomeEmailOption.Ship, VerificationStatus.Unverified); 

Isn’t that quite a bit simpler in your mind? That decision reads like documentation. It’s clear and to the purpose, and the maintainer can see instantly what the decision does and what the parameters imply. 

Booleans are a entice for future complexity

A bonus of enums is they’re expandable. Think about you might have a meals and beverage system that has small and enormous sized drinks. You would possibly find yourself with


var IsSmallDrink: boolean;

And also you construct your system round that Boolean variable, even having Boolean fields within the database for that info. However then the boss comes alongside and says, “Hey, we’re going to begin promoting medium drinks!”

Uh oh, that is going to be a serious change. Abruptly, a easy Boolean has grow to be a legal responsibility. However in case you had prevented Booleans and began with


enum DrinkSize {
  Small,
  Giant
}

Then including one other drink measurement turns into a lot simpler.

Look, Booleans are highly effective and easy. I’m sufficiently old to recollect when languages didn’t even have Boolean sorts. We needed to simulate them with integers:


10 LET FLAG = 0
20 IF FLAG = 1 THEN PRINT "YOU WILL NEVER SEE THIS"
30 LET FLAG = 1
40 IF FLAG = 1 THEN PRINT "NOW IT PRINTS"
50 END

So I perceive their enchantment. However utilizing Booleans finally ends up being fraught with peril. Are there exceptions? Positive, there are easy instances the place issues truly are and at all times will probably be both true or false—like isLoading. However if you’re in a rush, otherwise you let your guard down, or perhaps you are feeling a bit lazy, you may simply fall into the entice of writing convoluted, hard-to-reason-about code. So tread calmly and punctiliously earlier than utilizing a Boolean variable.

Turn leads into sales with free email marketing tools (en)

Leave a reply

Please enter your comment!
Please enter your name here