EasyPro challengePythonJavaScriptTypeScript
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"]}