Если у вас много цепочек команд if, каждый из которых выполняет уникальный блок кода, вы можете рассмотреть возможность использования карты простых классов функторов. В идеале при запуске приложения эта карта будет заполнена, и вы можете просто вызывать действия из экземпляра этой карты
Код будет выглядеть так
Action action = (Action) contextMap.get(task());
action.do();
Это имеет то преимущество, что для добавления новых задач требуется только определить новый класс для этой задачи и добавить его в contextMap при запуске.
В этом подходе есть и другие приятные вещи
- taskA () и taskB () могут совместно использовать одну и ту же contextMap и даже некоторые из одних и тех же действий, поэтому у вас меньше дублирования кода
- Действия могут быть проверены юнитом легче (обычно)
- Совместное использование кода между действиями будет простым без использования спагетти-кода или сложных операторов if (status> 2 && status! = 7)
И, конечно, здесь помогают интерфейсы, varargs и другие синтаксические сахара.