Есть задача, которая требует ветвления кода, я использовал машинное состояние switch case и enum.
Интересует какие еще есть хорошие варианты ветвления - например в моей задаче получилось 9 состояний. И можно ли такие вещи эффективно решать с помощью if else, или данный цикл подходит только для узких случаев.
Дать совершенно однозначный ответ невозможно - всегда есть масса факторов, учесть которые невозможно - вплоть до вкусовых предпочтений автора или стиля кодирования, принятого в этой команде.
switch - если он применим - пожалуй, будет поэффективнее, но опять же, если у него 50 case, то встает вопрос - не выбрать ли действительно map или иную структуру (скажем, если эти 50 значений - от 0 до 49, то так и просится массив/вектор) для выбора действия по значению.
Но могут быть ситуации, когда switch просто невозможно применить - простейший пример - для строк.
Но, откровенно говоря, при таком сильном ветвлении я бы задумался над вопросом - а правильно ли я спроектировал? нельзя ли обойтись без такого сильного ветвления вовсе?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей