Block design

Im Laufe der Jahre hat das Blockly-Team viele eigene Blöcke entworfen und anderen beim Entwerfen ihrer Blöcke geholfen. Im Folgenden finden Sie einige der Erkenntnisse, die sie gewonnen haben.

Übergeordnete Blöcke bevorzugen

Nach Möglichkeit sollte ein Ansatz auf höherer Ebene verwendet werden, auch wenn dadurch die Ausführungsleistung oder Flexibilität reduziert wird. Betrachten Sie diesen Apps Script-Ausdruck:

SpreadsheetApp.getActiveSheet().getDataRange().getValues()

Bei einer 1:1-Zuordnung, bei der alle potenziellen Funktionen erhalten bleiben, würde der obige Ausdruck mit vier Blöcken erstellt. Blockly zielt jedoch auf eine höhere Ebene ab und würde einen Block bereitstellen, der den gesamten Ausdruck umschließt. Ziel ist es, für die 95% zu optimieren, auch wenn das die restlichen 5% erschwert. Blockly ist nicht als Ersatz für textbasierte Programmiersprachen gedacht, sondern soll Nutzern den Einstieg erleichtern, damit sie textbasierte Programmiersprachen verwenden können.

Empfehlung: Konvertieren Sie nicht blind Ihre gesamte API in Blöcke.

Optionen für Nutzereingaben berücksichtigen

Drei Wiederholungsblöcke mit verschiedenen Möglichkeiten zur Eingabe einer Zahl: Drop-down-Menü, numerisches Feld und Werteingabe.

Es gibt drei Möglichkeiten, einen Parameter vom Nutzer abzurufen. Ein Drop-down-Menü ist am restriktivsten und eignet sich für einfache Anleitungen und Übungen. Ein Eingabefeld bietet mehr Freiheit und eignet sich für kreativere Aktivitäten. Ein Wertblock-Eingabeelement (in der Regel mit einem Schattenblock) bietet die Möglichkeit, einen Wert zu berechnen (z.B. einen Zufallsgenerator), anstatt nur einen statischen Wert zu haben.

Empfehlung: Wählen Sie eine Eingabemethode aus, die für Ihre Nutzer geeignet ist.

Separate bedingte und Schleifenblöcke verwenden

Ein Gegenbeispiel mit Wenn-Dann- und While-Blöcken in derselben Kategorie.

Die schwierigsten Blöcke für neue Nutzer sind bedingte Anweisungen und Schleifen. In vielen blockbasierten Umgebungen werden beide Blöcke in derselben Kategorie „Steuerelemente“ gruppiert. Beide Blöcke haben dieselbe Form und dieselbe Farbe. Das führt oft zu Frustration, da neue Nutzer die beiden Blöcke verwechseln. Blockly empfiehlt, Bedingungen und Schleifen in die separaten Kategorien „Logik“ und „Schleifen“ zu verschieben, die jeweils eine andere Farbe haben. Das macht deutlich, dass es sich um unterschiedliche Ideen handelt, die sich trotz ähnlicher Formen unterschiedlich verhalten.

Empfehlung: Behalten Sie Bedingungen und Schleifen getrennt.

Eine variable Anzahl von Eingaben verarbeiten

Für bestimmte Blöcke ist möglicherweise eine variable Anzahl von Eingaben erforderlich. Beispiele sind ein Additionsblock, der eine beliebige Anzahl von Zahlen addiert, ein if/elseif/else-Block mit einer beliebigen Anzahl von elseif-Klauseln oder ein Listenkonstruktor mit einer beliebigen Anzahl von initialisierten Elementen. Es gibt mehrere Strategien, die jeweils Vor- und Nachteile haben.

a) Der einfachste Ansatz besteht darin, dass der Nutzer den Block aus kleineren Blöcken zusammensetzt. Ein Beispiel wäre das Addieren von drei Zahlen, indem zwei Blöcke für die Addition von zwei Zahlen verschachtelt werden. Ein weiteres Beispiel wäre, nur if/else-Blöcke bereitzustellen und den Nutzer zum Verschachteln zu zwingen, um elseif-Bedingungen zu erstellen.

Verschachtelte Additionsbalken: 1 + (2 + 3)

Der Vorteil dieses Ansatzes besteht in seiner anfänglichen Einfachheit (sowohl für Nutzer als auch für Entwickler). Der Nachteil ist, dass bei einer großen Anzahl von Verschachtelungen der Code sehr unübersichtlich wird und für den Nutzer schwer zu lesen und zu verwalten ist.

b) Eine Alternative besteht darin, den Block dynamisch zu erweitern, sodass am Ende immer ein kostenloser Eingabebereich vorhanden ist. Ebenso löscht der Block die letzte Eingabe, wenn am Ende zwei kostenlose Eingaben vorhanden sind. Dieser Ansatz wurde in der ersten Version von App Inventor verwendet.

Block, der vier Werteingaben hinzufügt, von denen die letzte leer ist.

Automatisch wachsende Blöcke waren bei den App Inventor-Nutzern aus mehreren Gründen unbeliebt. Erstens gab es immer eine kostenlose Eingabe und das Programm war nie „vollständig“. Zweitens war es frustrierend, ein Element in der Mitte des Stacks einzufügen, da alle Elemente unter der Änderung getrennt und wieder verbunden werden mussten. Wenn die Reihenfolge jedoch nicht wichtig ist und Nutzer mit Lücken in ihrem Programm einverstanden sind, ist dies eine sehr praktische Option.

c) Um das Lochproblem zu lösen, fügen einige Entwickler den Blöcken Schaltflächen hinzu, mit denen Eingaben manuell hinzugefügt oder entfernt werden können. Open Roberta verwendet zwei solche Schaltflächen, um Eingaben unten hinzuzufügen oder zu entfernen. Andere Entwickler fügen jeder Zeile zwei Schaltflächen hinzu, damit Elemente auch in der Mitte des Stapels eingefügt und gelöscht werden können. Andere fügen jeder Zeile zwei Schaltflächen zum Heben und Senken hinzu, damit der Stapel neu angeordnet werden kann.

Block, der drei externe Werteingaben hinzufügt und Plus- und Minusschaltflächen zum Hinzufügen oder Entfernen von Eingaben hat.

Diese Strategie umfasst eine Reihe von Optionen, von nur zwei Schaltflächen pro Block bis hin zu vier Schaltflächen pro Zeile. Auf der einen Seite besteht die Gefahr, dass Nutzer die erforderlichen Aktionen nicht ausführen können, auf der anderen Seite ist die Benutzeroberfläche so mit Schaltflächen überladen, dass sie wie die Brücke des Raumschiffs Enterprise aussieht.

d) Die flexibelste Lösung besteht darin, dem Block eine Schaltfläche für Änderungen hinzuzufügen. Dieser wird als einzelne Schaltfläche dargestellt, über die ein Konfigurationsdialogfeld für diesen Block geöffnet wird. Elemente können nach Belieben hinzugefügt, gelöscht oder neu angeordnet werden.

Block, der drei Eingaben für Werte hinzufügt und einen Mutator zum Hinzufügen oder Entfernen von Eingaben für Werte hat.

Der Nachteil dieses Ansatzes besteht darin, dass die Modifikatoren für neue Nutzer nicht intuitiv sind. Die Einführung von Mutatoren erfordert eine gewisse Anleitung. Blockly-basierte Anwendungen, die auf jüngere Kinder ausgerichtet sind, sollten keine Modifikatoren verwenden. Sobald Sie sie jedoch beherrschen, sind sie für Poweruser unverzichtbar.

Empfehlung: Jede Strategie hat Vor- und Nachteile. Wählen Sie die Option aus, die für Ihre Nutzer am besten geeignet ist.