Blokowanie

Na przestrzeni lat zespół Blockly zaprojektował wiele własnych bloków i pomógł innym w zaprojektowaniu ich. Poniżej znajdziesz kilka wniosków, do których doszli.

preferuj blokady wysokiego poziomu;

Należy stosować podejście o większym zasięgu, nawet jeśli wiąże się to z obniżeniem wydajności lub elastyczności. Weź pod uwagę to wyrażenie w Apps Script:

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

W ramach mapowania 1:1, które zachowuje wszystkie potencjalne możliwości, powyższe wyrażenie zostałoby utworzone za pomocą 4 bloków. Blockly ma jednak na celu tworzenie bloków na wyższym poziomie i zapewnia jeden blok, który zawiera cały wyrażenie. Celem jest optymalizacja pod kątem 95% przypadków, nawet jeśli utrudnia to optymalizację pod kątem pozostałych 5%. Blockly nie zastępuje języków tekstowych, ale ma pomóc użytkownikom w przełamaniu początkowych trudności związanych z nauką, aby mogli korzystać z języków tekstowych.

Rekomendacja: nie konwertuj bezmyślnie całego interfejsu API na bloki.

Rozważ opcje wprowadzania danych przez użytkownika

3 bloki powtórzeń, które pokazują różne sposoby wprowadzania liczby: menu, pole liczbowe i pole wartości.

Parametr od użytkownika można uzyskać na 3 sposoby. Menu jest najbardziej ograniczające i sprawdzi się w przypadku prostych samouczków i ćwiczeń. Pole wejściowe daje większą swobodę i jest przydatne do bardziej kreatywnych działań. Blok wartości (zwykle z blokiem skopiowanym) umożliwia obliczenie wartości (np. generatora liczb losowych) zamiast podawania wartości statycznej.

Rekomendacja: wybierz metodę wprowadzania danych odpowiednią dla użytkowników.

Używaj osobnych bloków warunków i bloków pętli.

Przykład pokazujący bloki if/then i while w tej samej kategorii.

Najtrudniejsze bloki dla nowych użytkowników to warunki i pętle. Wiele środowisk opartych na blokach grupuje oba te bloki w tej samej kategorii „Elementy sterujące”, a bloki mają ten sam kształt i ten sam kolor. Często prowadzi to do frustracji, ponieważ nowi użytkownicy mylą te dwa bloki. Blockly zaleca przenoszenie instrukcji warunkowych i pętli do osobnych kategorii „Logika” i „Pętle”, z których każda ma inny kolor. Dzięki temu wiadomo, że są to różne pomysły, które działają inaczej, mimo że mają podobne kształty.

Zalecenie: oddziel warunki i pętle.

obsługa zmiennej liczby danych wejściowych,

Niektóre bloki mogą wymagać zmiennej liczby danych wejściowych. Przykładami są blok dodawania, który zlicza dowolny zbiór liczb, blok if/elseif/else z dowolnym zbiorem klauzul elseif lub konstruktor listy z dowolną liczbą zainicjowanych elementów. Istnieje kilka strategii, z których każda ma swoje zalety i wady.

a) Najprostszym podejściem jest umożliwienie użytkownikowi tworzenia bloku z mniejszych bloków. Przykładem może być dodawanie 3 liczb przez zagnieżdżenie 2 bloków dodawania po 2 liczby. Innym przykładem jest udostępnianie tylko bloków if/else i zmuszanie użytkownika do ich zagnieżdżania w celu tworzenia warunków elseif.

Zagnieżdżone bloki dodawania: 1 + (2 + 3).

Zaletą tego podejścia jest jego początkowa prostota (zarówno dla użytkownika, jak i dla programisty). Wadą jest to, że w przypadku dużej liczby zagnieżdżonych elementów kod staje się bardzo niewygodny i trudny do odczytania oraz utrzymania.

b) Można też dynamicznie rozszerzyć blok, aby na końcu zawsze było jedno wolne wejście. Podobnie blok usuwa ostatni element wejściowy, jeśli na końcu są 2 wolne elementy wejściowe. Takie podejście zastosowano w pierwszej wersji App Inventor.

Blok, który dodaje 4 wartości wejściowe, z których ostatni jest pusty

Bloki, które rosły automatycznie, nie podobały się użytkownikom App Inventor z kilku powodów. Po pierwsze, zawsze można było coś wpisać, a program nigdy nie był „kompletny”. Po drugie, wstawianie elementu w środku grupy było frustrujące, ponieważ wymagało odłączenia wszystkich elementów poniżej zmiany i ponownego ich połączenia. Jeśli jednak kolejność nie ma znaczenia i użytkownicy mogą zaakceptować luki w programie, jest to bardzo wygodna opcja.

c) Aby rozwiązać problem z dziurami, niektórzy deweloperzy dodają do bloków przyciski +/-, które umożliwiają ręczne dodawanie i usuwanie danych wejściowych. Open Roberta używa 2 takich przycisków, aby dodawać i usuwać elementy wejściowe od dołu. Inni deweloperzy dodają 2 przyciski w każdym wierszu, aby umożliwić wstawianie i usuwanie elementów z poziomu środka grupy. Inne aplikacje dodają 2 przyciski w górę i w dół w każdym wierszu, aby umożliwić zmianę kolejności elementów.

Blokada, która dodaje 3 zewnętrzne wartości wejściowe i ma przyciski plusa i minusa do dodawania lub usuwania danych wejściowych.

Ta strategia to wiele opcji, od 2 przycisków na blok do 4 przycisków na rząd. Z jednej strony istnieje ryzyko, że użytkownicy nie będą mogli wykonać potrzebnych działań, a z drugiej – że interfejs będzie tak wypełniony przyciskami, że będzie wyglądał jak mostek statku Enterprise.

d) Najbardziej elastycznym rozwiązaniem jest dodanie do bloku pola wyboru. Jest on reprezentowany przez pojedynczy przycisk, który otwiera okno konfiguracji danego bloku. Elementy możesz dodawać, usuwać i przestawiać według uznania.

Blok, który dodaje 3 wejścia wartości i posiada modyfikator do dodawania lub usuwania wejść wartości.

Wadą tego podejścia jest to, że modyfikatory nie są intuicyjne dla początkujących użytkowników. Wprowadzenie mutatorów wymaga podania instrukcji. Aplikacje oparte na Blockly kierowane na młodsze dzieci nie powinny używać mutatorów. Gdy już je opanujesz, staną się nieocenione dla zaawansowanych użytkowników.

Zalecenie: każda strategia ma swoje zalety i wady. Wybierz tę, która jest odpowiednia dla Twoich użytkowników.