!(r.SendNow || r.DryRun) requires you to read the entire statement and then negate the result. While !r.SendNow&&!r.DryRun each part of the statement stands on its own and is negated for themselves. That is how I read. I like the Ai suggestion more, because that is how I would write it myself. What I like about it is, that the negation of is right there with the variable. It gets more important, the more you divide sub-expressions in multiple lines.
!(r.SendNow || r.DryRun)requires you to read the entire statement and then negate the result. While!r.SendNow && !r.DryRuneach part of the statement stands on its own and is negated for themselves. That is how I read. I like the Ai suggestion more, because that is how I would write it myself. What I like about it is, that the negation of is right there with the variable. It gets more important, the more you divide sub-expressions in multiple lines.