Exiting Function Earlier
Programs with nested if conditions like this are very hard to understand:
def can_publish(post, user):
if user:
if user.is_active:
if post.owner == user:
return True
else:
return False
else:
return False
else:
return False
Solution
Exit from the function immediately if encountering any of the negative conditions:
def can_publish(post, user):
if not user:
return False
if not user.is_active:
return False
if post.owner != user:
return False
return True
Takeaways
Program can be simplified by keeping the flow flat. Avoid nested conditions whenever possible.