Если ваши вложенные IF становятся очень сложными, вы можете рассмотреть описание всей структуры с помощью конечного автомата и обработать ее таким образом. Таким образом, вы получите документацию по формальной диаграмме состояний, и ваш код будет намного проще.
Edit:
Вот лучшая попытка описать процесс. Хорошая вещь о
это то, что, как только у вас есть исходная диаграмма состояния и код
обработать его, добавив новые состояния очень легко. (Особенно если ты
создайте небольшой инструмент для чтения вашей диаграммы и создания таблицы для
вы).
Большинство людей просто используют их в контексте регулярных выражений и
в противном случае оставьте их в покое, но это хороший мощный инструмент для
ваш набор инструментов. Типичным примером является реализация полноценного FTP-сервера
путь тривиально прост.
Хорошо, к моему лучшему примеру, надеюсь, это поможет.
Рассмотрим этот IF псевдо-код:
if (a < 5)
do_b
do_c
if (a < 3)
do_d
else
do_e
end-if
end-if
Таблица перехода состояний для обработки может выглядеть следующим образом:
State Transition Action Next state
----- ---------- ------ -----
1 a < 5 2
1 7
2 do_b 3
3 do_c 4
4 a < 3 5
4 6
5 do_d 7
6 do_e 7
7 exit
Код для обработки будет выглядеть так:
currentState = 1
foreach table entry
if table_state == currentState
&& table_transition is true or blank
call table_action
currentState = table_next_state
Взгляните на http://en.wikipedia.org/wiki/State_transition_table для
более формальное описание.