EasyJavaScriptTypeScript

Encapsulate Conditionals

Clean CodeReadabilityRefactoring

Complex boolean expressions in if statements hide intent.

// dirty — what does this check?
function solve(user) {
  if (user.age >= 18 && user.isActive && !user.isBanned && user.emailVerified) {
    return 'eligible';
  }
  return 'not-eligible';
}

Refactor by extracting the condition into a named predicate isEligible(user).
solve(user, 'isEligible')true/false · solve(user, 'getStatus')'eligible'/'not-eligible'

Sample tests

Test #1Valid user is eligible
Input: [{"age":20,"isActive":true,"isBanned":false,"emailVerified":true},"isEligible"]
Output: true
Test #2Under 18 not eligible
Input: [{"age":16,"isActive":true,"isBanned":false,"emailVerified":true},"isEligible"]
Output: false
Test #3getStatus returns eligible
Input: [{"age":20,"isActive":true,"isBanned":false,"emailVerified":true},"getStatus"]
Output: "eligible"