Good point, I never thought of structuring my rules this way. It's better, but it requires you to artificially split things into separate chains and specify lots of things using negative logic, which is far from natural.
I just went the easy route and use FERM to translate between my brain and iptables.