More Readable Alternatives To Boolean Function Parameters

Boolean function parameters are hard to read. What could true possibly mean here?

settings.createSetting("userAge", true)

You need to look up the function definition to understand this code. The second parameter says where the setting should be stored.

createSetting: function(name, storeInLocalStorage) {}

What can you do to make this easier to read?

This example is based on the Chrome DevTools source code, where they have an elegant solution to this problem.

Instead of passing in a boolean parameter they've introduced a new function with a meaningful name. This function then calls through to the original createSetting method.

createLocalSetting: function(name){
    this.createSetting(name, true)
}

Now, when you read the code that creates the setting, it's clearer what's going on:

settings.createLocalSetting("userAge")

Using An Options Object

Options Objects are another way to explain what arguments are passed into a function, and save the reader from looking up the function definition.

Here's what the createSetting call would look like using an options object:

settings.createSetting({
    name: "userAge",
    storeInLocalStorage: true
})

As you can see, the downside of options objects is that they make code a bit more verbose.