Эти if-then-else-if
конструкции - одна из самых острых моих любимых мозолей.Мне трудно придумать менее творческий выбор дизайна.Но этого достаточно.Относительно того, что с этим можно сделать.
Я использовал несколько подходов к проектированию в зависимости от точного характера действия, которое необходимо предпринять.
Если число возможностей невелико и расширение в будущемвряд ли я могу просто использовать оператор switch.Но я уверен, что вы не дошли до SOF, чтобы услышать что-то скучное.
Если действие - это присвоение значения, тогда подход, основанный на таблицах, позволяет в будущем расти без фактического внесения изменений в код.,Просто добавьте и удалите записи таблицы.
Если действие связано со сложными вызовами методов, я склонен использовать шаблон проектирования «Цепочка ответственности».Я создам список объектов, каждый из которых знает, как обрабатывать действия для конкретного случая.
Вы передаете элемент для обработки первому объекту-обработчику.Если он знает, что делать с элементом, он выполняет действие.Если это не так, он передает элемент следующему обработчику в списке.Это продолжается до тех пор, пока элемент не будет обработан или не попадет в обработчик по умолчанию, который очищает или печатает ошибку или что-то еще.Обслуживание простое - вы добавляете или удаляете объекты-обработчики из списка.