Если код, когда-то написанный, в значительной степени статичен и не подвержен слишком большим изменениям, то я бы остановился на switch
. Ваш словарный подход здесь, по крайней мере на первый взгляд, прекрасно подходит для того, чтобы быть более динамичным - хотя это больше основано на требованиях.
Что касается замены коммутаторов везде кодом, использующим этот подход, я бы лично не делал этого в большинстве случаев. Мое честное мнение таково, что это было бы просто умно ради этого, но это все еще легко поддерживать. Личный вкус, а не лучшая практика, на мой взгляд, является самым большим фактором.
С другой стороны, как уже говорили другие, это может быть реальным решением для длинных операторов switch. С другой стороны, что-то вроде паттерна стратегии также будет хорошим способом поддержки изменений в поведении.