EasyJavaScriptTypeScript

Avoid Flag Arguments

Clean CodeFunctionsRefactoring

A boolean flag argument is a code smell — it means the function does two things.

// dirty
function createUser(name, isAdmin) {
  if (isAdmin) {
    return { name, role: 'admin', permissions: ['read', 'write', 'delete'] };
  }
  return { name, role: 'user', permissions: ['read'] };
}

Split this into two functions: createUser(name) and createAdminUser(name). Then solve(name, type) dispatches to the right one — no boolean flag.

solve('Alice', 'createUser'){ name: 'Alice', role: 'user', permissions: ['read'] }
solve('Bob', 'createAdminUser'){ name: 'Bob', role: 'admin', permissions: ['read', 'write', 'delete'] }

Sample tests

Test #1Works with empty name string
Input: ["","createUser"]
Output: {"name":"","role":"user","permissions":["read"]}
Test #2createUser returns user role with read permission
Input: ["Alice","createUser"]
Output: {"name":"Alice","role":"user","permissions":["read"]}
Test #3createAdminUser returns admin role with full permissions
Input: ["Bob","createAdminUser"]
Output: {"name":"Bob","role":"admin","permissions":["read","write","delete"]}