The “anti-woke” men at my office once crowned me the “woke police” because I commented on one of their sexist/racist/homophobic/ whatever “jokes”. It’s my badge of honour. The weird part is that we kinda entered into some sort of cold war. I could comment on their “jokes”, pretending it was in jest as part of my job as “woke police”, while still getting the message across. I guess it kinda kept some semblance of friendliness and ability to cooperate while we still got our opinions out.
We can clearly see that this design is silly, because it allows for so many invalid states. Yet when we represent some type, let’s say in Java, were so often forced to do this exact same thing. Have variables in a container of which only a certain combination is valid. And then have at most a comment saying “this number is only valid if X is also set” or “if the validity boolean is true”. Luckily Java finally has some ability for the so-called sum types now, just like Haskell’s data types or Rust’s enum types. Imo any language should have this.