Complex boolean expressions in if statements hide intent.
// dirty — what does this check?
interface User { age: number; isActive: boolean; isBanned: boolean; emailVerified: boolean; }
function solve(user: User): string {
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