私は次のオプションを思いついた:
gotoステートメントの使用:
Start:
goto Data
Data:
goto Finish
Finish:
;
switchステートメントの使用:
switch(m_state) {
case State.Start:
m_state = State.Data;
break;
case State.Data:
m_state = State.Finish;
break;
case State.Finish:
break;
}
gotoとswitchを一緒に使用する:
switch(m_state) {
case State.Start:
goto case State.Data2;
case State.Data1:
goto case State.Finish;
case State.Data2:
m_state = State.Data1;
//call to a function outside the state machine
//that could possibly change the state
break;
case State.Finish:
break;
}
私はgotoステートメントを使用する最初のオプションを好みます。これは、より高速で冗長性が少ないためです。しかし、それが最良の選択肢かどうかはわかりません。パフォーマンスに関しては多分ですが、読みやすさに関してはわかりません。だから私はこの質問をします。どのオプションが好きですか、そしてその理由は何ですか?