Personalmente la trovo una scelta poco oculata.
Tieni presente che in genere funzioni di quel tipo possono essere espanse inline dal compilatore visto che contengono solo un return migliorando in tal modo le prestazioni.
In ogni caso si potrebbe ridurre la cosa ad un pattern factory di tipo particolare visto che in questo caso non ritorni oggetti ma valori, però il principio è il medesimo, passare una chiave per ottenere un valore di ritorno con una serie di if else o switch.