Once upon a time a ret paladin could, with varying levels of use, justify wearing the following stats: intellect, spell power, agility, strength, attack power, armor penetration, haste, crit, hit, expertise, and of course stamina because that is on everything. That is ten stats that could increase their DPS. Intellect was needed because they used to have terrible regen, spell power affected much of their damage, agility gives crit, armor penetration increased physical damage by allow their attacks to ignore some enemy armor, and all the rest are understandable melee DPS stats.
This caused some problems. It meant that gear was a strange thing to itemize, warriors and paladins sharing most stats, except that paladins needed intellect and gained little from armor penetration while warriors used ArP a lot but had no benefit at all from intellect. For sets this wasn't an issue, but non-set items were tricky because of it. The simple solution was to just never put any intellect or ArP on non-set plate gear. What about non-armor gear? If you expand to rings, trinkets, and necklaces, now you're bringing in rogues, hunters, and feral druids. Those classes like agility and AP, while warriors and paladins prefered strength to AP due talent multipliers and blessing of kings. To make matters worse, a ring with strength could be worse than a ring with agility and attack power, because of how the cost of stats changes, so that the plate classes could prefer the items intended for other classes, while the reverse was not true, just like with non-set plate with intellect or spell power, which paladins would use but other classes could not. It could get even worse, with non-plate gear being best in slot for plate classes, meaning that leather could go to warriors if DPS was the only consideration, and since the old model of hybridism was dead, it was.
I hope this has been a confusing mess of a post so far, because that should help you to understand the problem.
Blizzard saw that stats were getting too complex, so they eliminated many of them. Gear was rearranged to narrow down what classes had to focus on. Armor mastery pushed everyone to their correct armor type. Everything was good again.
Except for the poor tanks.
Offensive stats were based on the player, while defensive stats were based on the enemy. By that I mean that a DPS will pick a certain stat based on their class and other stats, but the actual enemy they face is irrelevant. It's not as if certain enemies favored ArP over haste, and in cases where they could have, the varying stats weren't available in sufficient quantity to be able to change around much.
Contrast this with tanks, specifically, with block. It used to be that a block blocked a certain amount of damage, based on your block value. Against a boss, you might block a significant percentage of the incoming hit, but dodge and parry would negate it entirely. However, block rating, which changes your chance to block, was much cheaper to get, so a player could get a very high chance to block and a high block value, though against a boss it was still not going to be close to a fully avoided hit. However this changed in some cases. Bosses with faster attack speeds, for a set DPS output, would have smaller individual attacks, making blocked attacks closer to avoidance. Against many mobs, as in the case of trash or add tanking, block can almost, or sometimes entirely, block the attack, making it as effective as avoidance, but at a much lower cost. The overall effect is that tanks could significantly improve their damage mitigation by gearing for the encounter.
Did block cause excessive complexity? No. We knew what it was for and when. It didn't cause terrible itemization problems between paladins and warriors, and in the case of off-set items that a druid might want, that was simply a matter of not putting block stats on those items; since beside that we could share a large number of stats. Of course DKs ruin the plate itemization, but there is an easy solution to that: eliminate DKs in order to bring back the stats of block value and block rating.
Testing game programming
7 hours ago