Last time on Lost In Permutation, I wrote a FizzBuzz implementation that didn't use the run-time multiplication and division operators. Unfortunately, magic numbers make me squeamish, and there is too much coupling between the data in
rg and the if-chain. In order to change the behavior of the function, I would have to change both places.
To fix this, I can use
printf() (which doesn't care if I pass an extra parameter) as the dispatcher. The more decisions I can foist onto the runtime, the less code I have written, which is great because it means I have less code to test, less code to read, and less code to maintain.
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
- Antoine de Saint-Exupéry
Now there is no longer an if-chain that needs to be tested, only the prepopulated data in the ring buffer
rg and the behavior of the ring buffer itself. Except for the magic constant 15, the only place to make changes to the function is in
rg itself. When this series concludes, I will examine how to expand this printf-dispatch solution for any variant of the FizzBuzz problem.