Briefing

Avoid Boolean Blindness: Use Options Objects for Cleaner Code

ux
by AllThingsSmitty ·

Refactor functions to use named options objects instead of positional booleans.

What to do now

Refactor existing functions to accept options objects and update call sites.

Summary

The article discusses the pain of reading function calls that use positional boolean flags, such as createUser(user, true, false). It explains how these flags force developers to jump back to the function definition to remember what each boolean represents. The author recommends using an options object, e.g. createUser(user, { isAdmin: true, sendWelcomeEmail: false }), which makes the intent explicit and scales when more flags are added. It also suggests refactoring single‑action booleans into separate functions like createAdminUser(user) to avoid ambiguity. The piece highlights that while TypeScript enforces types, it does not convey meaning, so named options are preferred for readability.

Using options objects reduces mental overhead, improves maintainability, and aligns with modern JavaScript/TypeScript best practices. The author encourages developers to adopt this pattern early to prevent future code comprehension issues.

Key changes

  • Boolean flags force developers to jump back to definitions to remember meanings.
  • Options objects make intent explicit and readable.
  • Adding more flags becomes manageable with named properties.
  • Single‑action booleans can be replaced by dedicated functions.
  • TypeScript types do not convey semantic meaning.

Affects

internal

Customer impact

Analyzing matches…

Ask about this story

Impact on an agency? Which customers? Compare historically Risks of waiting