True, but its a mechanical switch turned by a human, there is negligible overhead even if it bounces a dozen times per transistion. If that worries you can poll regularly to limit the overhead.
Hysteresis means having a dead-band, for instance of 1 count - so that oscillating a count back and forth is hidden from the user. One way to code that is record the last two distinct count values (which will differ by 1), and only updating when the actual count becomes larger or smaller than both the last two reported positions - this will hide bounce.