Ich persönlich habe das QP-Framework / die QP-Bibliothek aufgrund der GPL-Lizenz nicht verwendet. Zu der Zeit glaubte ich nicht, dass mein Arbeitgeber bereit war, den Teig zu husten, damit ich mit HSMs (hierarchischen Zustandsautomaten) unter Verwendung von QP experimentieren konnte. Ich musste meine eigene implementieren, die der von QP ähnelte, als ich eine schreckliche Zustandsmaschine überarbeitete, die Hunderte von Codezeilen in Anspruch nahm, wie Jobys Beispiel, aber mal 1000. Das alte Design, das ausgeliehen wurde, um Funktionen zum Laufen zu bringen Es war ein schrecklicher Schmerz, ihn aufrecht zu erhalten. Ich hatte Angst, etwas Neues hinzuzufügen, aus Angst, etwas anderes zu zerbrechen.
Ich habe den Code zu einem HSM umgestaltet, der für mich persönlich viel sinnvoller ist, wie sich das System verhalten soll. Es hat viel besser funktioniert, als ich mir vorstellen konnte. Es war so viel einfacher zu modifizieren und zu warten, als ich es mir jemals erträumen konnte. Ich musste sogar fast einen Großteil der Zustandsmaschine wiederholen, weil sich das System unerwartet verhält. Mit dem Framework, das ich erstellt hatte, war es viel einfacher zu reparieren, und ich bin sicher, dass es in QP genauso einfach gewesen wäre. Das Framework, das ich erstellt habe, wurde populär und verbreitete sich auf einige andere komplexe Zustandsmaschinen in unserer Codebasis.
Ich hatte einen Freund, der das Quantenframework mithilfe von Java in einem Roboter implementierte, der ziemlich gut funktionierte. Es war Teil des Entscheidungsalgorithmus des Roboters, der auf bestimmten Eingaben beruhte. Angesichts der Entscheidungen, die auf der Grundlage des Roboterzustands getroffen werden mussten, war dies eine natürliche Passform.
Was ich von der Schönheit von QP verstehe, ist die Fähigkeit, ein fertiges Framework für ein Zustandsmaschinendesign zu haben, das für Ihren Prozessor optimiert ist, und nicht auf CASE-Tools angewiesen zu sein, die ineffizienten Code für Boilerplates ausspucken. Ich würde QP jedoch nur verwenden, wenn Sie eine Reihe komplexer Zustandsautomaten implementiert haben, die Ihr Design beschreiben.
Wenn alles, was Sie haben, etwas so Einfaches wie Jobys Beispiel ist, dann tun Sie es einfach so, wie er es erklärt hat. Aber wenn Sie feststellen, dass Ihre Zustandsmaschine mit allen Arten von "if else" -Anweisungen wächst und wächst, die sich um verschiedene Bedingungen drehen ... dann ist es möglicherweise an der Zeit, etwas wie QP zu versuchen, um es in HSMs zu zerlegen.