Hi,
I use both, and it's very much related to the actual effect you want to achieve in terms of logic.
1: is your general no brainer case
2: is when you want to support mpre complex behavior. I use this when I want to define a process that I need to follow and double check regularly. Example:
let's say we have an industrial robot that needs to perform a specific task, like picking up a part and put it on a belt or something. The process of picking up, and delivering can be made into one fsm that will dispatch more precise commands to the robot arms, . and so in this case, each movement if one state, and you cascade down the process:
is the robot in position: YES, NO
no, would check if the robot can more, and if yes, move it to the pick up spot, then back to this state likely.
Is the part available; YES, NO
etc etc
so approach number 2 is like switch statements on steroid where you can implement really powerful logical processes, it's a lot more then just a switch statement
now, sometimes for clarity, you simply want to spread things a bit, and that's fine too, I often have one state per Case, even tho they could be all checked on one states, simply because I want clarity, I can then name states to reflect the case, something more difficult with one state.
Bye,
Jean