Ja osobiście nie korzystałem z frameworka / biblioteki QP z powodu licencji GPL. W tamtym czasie nie sądziłem, że mój pracodawca jest gotowy wykrztusić ciasto, abym mógł eksperymentować z HSM (hierarchicznymi maszynami stanów) za pomocą QP. Musiałem wdrożyć własny, podobny do QP, kiedy refaktoryzowałem okropną maszynę stanową, która zajmowała setki wierszy kodu jak przykład Joby'ego, ale razy 1000. Stary projekt, który został zapożyczony, aby uruchomić funkcje w napiętym terminie było okropnym bólem do utrzymania. Bałem się, że spróbuję dodać do niej coś nowego z obawy przed zepsuciem czegoś innego.
Przeprojektowałem kod w HSM, który miał dla mnie znacznie więcej sensu w tym, jak powinien zachowywać się system. Działało o wiele lepiej, niż mogłem sobie wyobrazić. O wiele łatwiej było je modyfikować i utrzymywać, niż kiedykolwiek mogłem marzyć. Musiałem nawet prawie przerobić wiele maszyn stanowych z powodu nieoczekiwanego zachowania w systemie. O wiele łatwiej było to naprawić za pomocą stworzonego przeze mnie frameworka i jestem pewien, że w QP byłoby to równie łatwe. Frameworka, którą zbudowałem, stała się popularna i rozprzestrzeniła się na inne złożone maszyny stanu w naszej bazie kodu.
Miałem przyjaciela, który zaimplementował platformę kwantową przy użyciu Javy w robocie, który działał całkiem dobrze. Było to częścią algorytmu decyzyjnego robota opartego na pewnych danych wejściowych. To było naturalne dopasowanie, biorąc pod uwagę decyzje, które musiał podjąć w oparciu o stan robota.
Rozumiem, że piękno QP polega na tym, że mam gotowość do stworzenia szkieletu dla projektu maszyny stanów zoptymalizowanego pod kątem twojego procesora i nie musisz polegać na narzędziach CASE wyrzucających nieefektywny kod płytki. Ale użyłbym QP tylko wtedy, gdy masz zestaw złożonych maszyn stanów do implementacji, które opisują twój projekt.
Jeśli wszystko, co masz, to coś tak prostego jak przykład Joby'ego, zrób to tak, jak wyjaśnił. Ale jeśli zauważysz, że twoja maszyna stanowa rośnie i rośnie wraz z różnego rodzaju stwierdzeniami „jeśli inaczej” owiniętymi wokół różnych warunków ... to może nadszedł czas, aby wypróbować coś w rodzaju QP, aby rozbić ją na HSM.