Несколько способов избавиться от большого количества операторов if/else или switch/case в C++:
- Использовать бинарную логику. 2 Например, в игре «Крестики-нолики» вместо условных операторов ветвления используется бинарная логика. 2
- Завернуть каждую ветку if/else в функцию. 4 Затем сделать таблицу указателей на функции и читать указатель из таблицы, вызывая по нему нужную функцию. 4
- Использовать хэш-карту. 5 Например, загрузить из файла допустимые команды и имена функций для запуска, сохранить их в виде вектора пар или карты, а затем с помощью цикла for вызывать указатель на нужную функцию. 5
Также можно разделить каждую ветку switch/case на специализированные классы, чтобы новая функциональность реализовывалась с помощью новых классов, а не изменений в существующем коде. 1