I've always needed to add debouncing code, when handling switch inputs on microcontrollers. While I've only used three different types of switch, they all needed debouncing.
My (two) rotary encoders appear to have no "bouncing" on their P and Q outputs.
I've looked at the logic-analyser captures of phase and quadrature and they're absolutely clean. Not a single spike, over dozens of turns.
Is there something about the design of rotary encoders which make this true?
Or is this just a coincidence?