Software button debounce.

I'm a hardware guy too, but I like the software time check method - then you can do a press & hold thing, and control how fast the button presses can re-occur. Like press and hold, if after 250mS is still low allow another button press action to occur.
Other methods can require that the button be released before it is recognized as a valid press again.
Lots of possibilities, implementation depends on your requirement.