← Back toFront-end Tips

Avoid boolean parameters

Written byPhuoc Nguyen
Category
Practice
Tags
JavaScript
Created
13 May, 2021
Let's consider a situation where we have a function that writes a string to a file. It allows user to append the content to file, or override the content via the `override` parameter:
const writeToFile = (content: string, file: string, override: boolean) => {
...
};
With that signature, the function will be invoked as following
// Append the content to file
writeToFile(content, file, true);

// Override the file
writeToFile(content, file, false);
If you are not the one who creates the function, you have to question what the boolean value represents until looking at the implementation.
It is worse if the function has a lot of boolean flags. Using boolean flags makes the core harder to read and maintain.
There are a few ways to get rid of the issue.

Provide explicit methods

appendToFile(content, file);
overrideFile(content, file);

Use an object parameter

writeToFile(content, file, { override });

Use an enum

If you're using TypeScript, then you can use `enum` to represent the possible values of a boolean flag.
enum SaveMode {
Append,
Override,
}

writeToFile(content, file, mode: SaveMode);
It's confident for consumers to call the method:
writeToFile(content, file, SaveMode.Append);

// Or
writeToFile(content, file, SaveMode.Override);

See also

Questions? 🙋

Do you have any questions? Not just about this specific post, but about any topic in front-end development that you'd like to learn more about? If so, feel free to send me a message on Twitter or send me an email. You can find them at the bottom of this page.
I have a long list of upcoming posts, but your questions or ideas for the next one will be my top priority. Let's learn together! Sharing knowledge is the best way to grow 🥷.

Recent posts ⚡

Newsletter 🔔

If you're into front-end technologies and you want to see more of the content I'm creating, then you might want to consider subscribing to my newsletter.
By subscribing, you'll be the first to know about new articles, products, and exclusive promotions.
Don't worry, I won't spam you. And if you ever change your mind, you can unsubscribe at any time.
Phước Nguyễn