DEV Community

Jesse M. Holmes
Jesse M. Holmes

Posted on

5 1

How Do You Name Your Boolean Variables?

I've seen some absolutely confounding names in recent code reviews. Sometimes you need to know if Godzilla exists! Do you:

const godzillaExists;
const doesGodzillaExist;
const godzilla;
Enter fullscreen mode Exit fullscreen mode

Maybe it's more specific:

const godzillaExistsInStore;
const godZillaInStore;
const hasGodzillaBeenStored;
Enter fullscreen mode Exit fullscreen mode

Top comments (8)

Collapse
 
gsto profile image
Glenn Stovall • Edited

I prefer the first example in both cases. Specificity depends on the context. Does the function care about the "store" or not? Could Godzilla exist somewhere else, heaven forbid?

My go-to is to default to writing booleans in a way that makes them read more sentence-like in context. For example:

if ( godzillaExists && mothraExists ) {
  doBattle(godzilla, mothra) 
}
Collapse
 
dmfay profile image
Dian Fay

Hungarian notation is dead and good riddance to it, but formulating boolean names as isX or hasX does a lot for clarity.

Collapse
 
610yesnolovely profile image
Harvey Thompson • Edited
var hasGoodPoint = true;
var isMyConvention = true;

Also, I prefer not to pass booleans to (typically multi-argument) functions unless they are obviously expecting true or false (ie. property methods), so typically "can" or similar named functions:

This is okay:

canPost(true);

But this is not so good:

someMethod("Thing", true);

Some languages have named arguments, so in that case it'd be better to say:

someMethod("Thing", canDelegate=true);

Alternatively use enums:

someMethod("Thing", Delegation::Allowed);
Collapse
 
jckuhl profile image
Jonathan Kuhl

usually something that makes grammatical sense paired with if

if(userExists && userHasValidCredentials) { handeLogin(user) }

I'm also not worried about long variable names because VSCode fills them in for me, and most editors do that for you.

Collapse
 
aligear profile image
aligear

I usually use a variable with is as prefix, like

let isUserLogged = false;
Collapse
 
databasesponge profile image
MetaDave 🇪🇺

For Ruby, and the humble question mark.

def intersects_with?(other)
  return false if empty? || other.empty?

  (self & other).any?
end

How would you feel about godzilla?

Collapse
 
satyanx1 profile image
satyanx1

At least they all follow camel casing

Collapse
 
pcrunn profile image
Alexander P.

In that case I wouldn't use a boolean but an object. To check if it exists, I'd check if it's null or not.