I've worked in the past with code bases that have what were called 'state machines' implemented with at best switch statements and at worse a lot of if's and else's and some state variables.
I've also worked with code bases with a formally defined state machine object/concept, with pre-defined states, events, and state transitions driven by events.
Question for the crowd: what would you call the non-state machine state machine in the first case?
You'd probably still call it a state machine if that is what it's doing. Maybe not well implemented but it also depends. State machines are tricky to get right.
State machines implemented in-line with code usually end up as a mess. It's best if they are factored out, and implemented as a DSL inside a true state machine engine running as a somewhat independent service or library.
I've also worked with code bases with a formally defined state machine object/concept, with pre-defined states, events, and state transitions driven by events.
Question for the crowd: what would you call the non-state machine state machine in the first case?