DavidOConnor:
mechanical encoders need debounce.
No they don't. Quadrature encoding makes debouncing unnecessary, only one switch can be bouncing at any given time.
All they need is to be polled at an interval which is short enough that you don't miss any pulses. You'll find they're perfectly reliable if you do that.