Defensive None checks scattered throughout code are a smell.
# dirty — None checks everywhere
def solve(user):
name = user['name'] if user else 'Anonymous'
email = user['email'] if user else 'no-email@placeholder.com'
role = user['role'] if user else 'guest'
return {'name': name, 'email': email, 'role': role}Refactor using a Null Object: create a GUEST_USER constant that provides safe defaults, then use it when user is None.
solve(None) → {'name': 'Anonymous', 'email': 'no-email@placeholder.com', 'role': 'guest'}
Sample tests