4 ms·
Agree. I’m a huge fan of this approach when developing complex UIs, but you can definitely run into “state explosion”. When you rigorously enumerate all the i
by adamkl 6y ago
Agree.
I’m a huge fan of this approach when developing complex UIs, but you can definitely run into “state explosion”.
When you rigorously enumerate all the implicit states in your system you quickly realize that your system can have a lot of states.
It’s a balancing act. How much rigour do you need vs. how much code are you willing to deal with.
The implicit states will always be there whether you make them explicit via a state chart or not. But for simple things, it may not be worth the overhead.
- specialist 6y agoMe three. Ages ago, I implemented an Illustrator style direct manipulation user interface. We had spent so much time analyzing, documenting, specifying in prep. My initial implementation, per our "perfect" spec, really sucked. Turns out there's a significant amount of fit and finish to a direct manipulation interface that I wasn't able to handle formally with charts and machines. Ended up with a bunch of special cases. Unanticipated knock on effects were unsatisfying negotiations with QA/Test (how to test) and tech writers (how to describe) our product. I've always wondered about that gap. Was I doing it wrong? Are there better formalisms? How'd Illustrator (and others) do their direct manipulations? With the rise of touch UI, I anticipate the problem space (complexity of the states) has gotten smaller. For instance, no modifier keys. But that's just a guess.
- jcelerier 6y agoTo give another data point: https://ossia.io https://ossia.io had three different tentatives for implementing its UI manipulation "manually" before reaching for (indeed complex) state machines which I spent at least 4-5 full-time days specifiying on paper for all their cases (following days of meetings trying to define informal specs). It's the thing that ended up working, and still works 4-5 years after the fact & numerous modifications / improvements / new features. Also Qt with GammaRay allows to visualize them "live" which was an immensely useful feature to debug them during development.
- vidro3 6y agoGood insight. I think it's a blessing and a curse. currently i think me and my team have trouble identifying all those states and thus mis-understand or under-understand the complexity of some features. I want to use state charts to force us to look at all the states. Of course I expect everyone will soon get annoyed at all these states we are tracking.