"if" is almost always easier to reason with, "unless" can be elegant, but it's so often misused that it doesn't really matter
Let me put it this way: Are there _any_ programming paradigms that don't get poorly used? We need to learn how to use our tools well, not reduce them to banality.
Everyone's lazy or overwhelmed at some point, and it made mistakes too easy to make (the problem is that it overtightens the lug nuts because the ease of use removes the proper physical feedback).
In situations where you don't have the bandwidth to perfectly educate everyone and enforce rules, sometimes it's easier to limit the toolset. A tire iron can be misused too, but it's a little harder.
raise(“a long error string”) unless valid
This reads much worse, when the string pushes the line near max width, than: valid or raise(“..
Of course it’s another idiom to learn but it’s not a difficult one when used simply.