wiki:IPlugin Requirements

Version 3 (modified by Matthäus Wander, 11 years ago) (diff)

--

Auf dieser Seite werden Anforderungen an das IPlugin-Design gesammelt. Diese Anforderungen ergeben sich aus ...

  • ... dem, was ein Plugin-Entwickler erwartet:
    • schlanke, einfach zu implementierende Schnittstelle
    • Entlastung des Plugins von sämtlichen Funktionen, die nicht zur unmittelbaren Plugin-Funktionalität gehören
    • keine Codeblöcke, die sich in mehreren Plugins wiederholen
    • klar definierte und intuitive Funktion aller Bestandteile der Schnittstelle (jede Funktion sollte frei von Seiteneffekten sein und nicht zum Missbrauch zur Umsetzung einer anderen Funktion verleiten)
  • ... dem, was sich aus den Anforderungen an die visuelle Programmiersprache sowie der Ausführungsmaschine ableitet:
    • schnelle Übergabe von Ein- und Ausgabeparametern
    • Unterstützung beliebiger Datentypen

Anforderungen

  • Ausgabeparameter sollten nur dann aufbereitet/geliefert werden, wenn sie benötigt werden. Beispiel: ICryptoolStream und byte[] als Ausgabeparameter. Wenn nur der Streamausgang verbunden ist, braucht man kein byte[] erstellen. (demand-driven)
  • Auf Eingabeparametern sollte keine Verarbeitung nötig sein. OnPropertyChanged, damit der Editor die QuickWatch-Ansicht aktualisiert, ist sinnlos, da der Editor durch die Ausführungsmaschine erfahren kann, dass sich der Parameter geändert hat.
    • Denkbar: Man könnte vom Plugin-Programmierer erwarten, dass er Eingabeparameter konsumieren muss (Flusskontrolle der Ausführungsmaschine). Das hängt davon ab, ob es sinnvolle Anwendungsfälle gibt gegenüber einem automatischen Konsum durch die Ausführungsmaschine.