excellent observations!
Couple more:
4) when transitioning from state X to state Y you can publish an event or log a message, so you know exactly when (and perhaps why) a transition is triggered.
-
if you use an FSM library, like this one ported from Arduino, you have access to state enter and exit functions that can be useful to set things up while entering/leaving a state. It also tells you how much time the FSM has been in that state,
-
when you start coding with FSMs in mind you don't really know what you are doing but you try it and most probably you'll stick with it since you'll like it so much
-
if your code has a variable called state or status then is very probable that you are using an FSM but you did not know.
-
the two links I had fun reading and finally got me into using FSMs:
this one:
and this one:
I'd say try one once and see, you won't regret