Python Guard Clauses
Control Flow Satellite
Guard Clauses
Guard clauses exit early when preconditions fail, reducing indentation and making code easier to scan.
Pattern
def charge(user, amount):
if user is None:
raise ValueError("Missing user")
if not user.active:
return
if amount <= 0:
return
process_charge(user, amount)
- Handle invalid states upfront.
- Keep the "happy path" unindented.
Tips
- Combine guard clauses with descriptive error messages.
- Use them inside loops to skip items quickly.
- Avoid stacking too many—extract helper functions when logic grows.