Example 4: Complexity Reduction
Example 4: Complexity Reduction
// Bad: Cyclomatic complexity = 7
function processUser(user: User): void {
if (user.age > 18) {
if (user.country === 'US') {
if (user.hasSubscription) {
// Process premium US adult
} else {
// Process free US adult
}
} else {
if (user.hasSubscription) {
// Process premium international adult
} else {
// Process free international adult
}
}
} else {
// Process minor
}
}
// Good: Cyclomatic complexity = 2
function processUser(user: User): void {
const processor = getUserProcessor(user);
processor.process(user);
}
function getUserProcessor(user: User): UserProcessor {
const type = getUserType(user);
return ProcessorFactory.create(type);
}