Preconditions are the point of the function.
Refactoring has this as Replace Nested Conditional with Guard Clauses and most codebases never applied it.
Cyclomatic complexity capped at 3 and functions at 15 lines, both as build failures. Ten times tighter than McConnell's ceiling and it holds because there's no column in the config for just this once.
A private field with a getter and setter for it is public with extra steps. Every caller can reach the decision, so nothing was hidden. The keyword did the syntactic part and the design part never got done.
I've had the argument enough times to stop having it nicely. There is no such thing as a comment with a good reason, only code that hasn't been made to say it yet. Rename it, split it, or admit the logic is in the wrong place.