Guard clauses handle edge cases first and return early:
function processUser(user) {
if (!user) {
console.log("No user")
return
}
if (!user.isActive) {
console.log("User inactive")
return
}
// Main logic here - no nesting needed
console.log(`Processing ${user.name}`)
}
This pattern eliminates deep nesting. Handle invalid cases first, then write the happy path without indentation.