wiki:IPlugin Requirements

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

--

Auf dieser Seite wird die Spezifikation einer neuen IPlugin-Schnittstelle erarbeitet

Anforderungen

  • Was IPlugin-Entwickler erwarten:
    • 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)
  • Was sich aus den Anforderungen an die visuelle Programmiersprache sowie der Ausführungsmaschine ableitet:
    • schnelle Übergabe von Ein- und Ausgabeparametern
    • Unterstützung beliebiger Datentypen

Vorschläge zur Spezifikation

  • 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, z.B. sollte der Plugin-Entwickler nicht OnPropertyChanged für das QuickWatch-Update auf Eingabeparametern ausführen müssen, da es Editor/Ausführungsmaschine unter sich mitteilen können ohne den Umweg über das Plugin.
    • Denkbar: Man könnte vom Plugin-Programmierer erwarten, dass er Eingabeparameter händisch konsumieren muss (Flusskontrolle der Ausführungsmaschine). Das hängt davon ab, ob es sinnvolle Anwendungsfälle gibt gegenüber einem automatischen Konsum der Eingabeparameter durch die Ausführungsmaschine.
  • QuickWatch sollte automatisch auf allen Datentypen per ToString() funktionieren. IPlugins sind nicht für das Konvertieren von Datentypen in eine QuickWatch-Ansicht zuständig.
    • Denkbar: Ein Interface IQuickWatch mit Methode ToQuickWatchString() für komplexe, eigens definierte Datentypen.