How are subroutines different from just having a switch statement calling different function depending on an integer uniform?