When you start with isGood = True , everything seems fine. Then you need the opposite, so naturally you go with isNotGood = not isGood . But wait, you need another layer of negation, so you create isNotBad = not isNotGood . At this point, you're basically playing semantic Jenga with your brain. The # wait comment is the chef's kiss here. That's the exact moment where you pause, stare at your screen, and question every life choice that led you to this triple-negative nightmare. Is something that's not bad actually good? Is not not good just bad? Who even knows anymore. Time to refactor... or just add another comment and call it a day.