Blockly ekibi, yıllar içinde kendi bloklarının çoğunu tasarladı ve diğerlerinin kendi bloklarını tasarlamasına yardımcı oldu. Aşağıda, bu süreçte edindikleri bazı derslerden bahsedilmektedir.
Üst düzey blokları tercih edin
Yürütme performansını veya esnekliği azaltsa bile mümkün olduğunda daha üst düzey bir yaklaşım benimsenmelidir. Şu Apps Komut Dosyası ifadesini düşünün:
SpreadsheetApp.getActiveSheet().getDataRange().getValues()
Tüm potansiyel özellikleri koruyan 1:1 eşlemede, yukarıdaki ifade dört blok kullanılarak oluşturulur. Ancak Blockly daha üst düzey bir yaklaşımı hedefler ve ifadenin tamamını kapsayan tek bir blok sağlar. Amaç, kalan% 5'i daha zor hale getirse bile% 95'lik durum için optimizasyon yapmaktır. Blockly, metin tabanlı dillerin yerini almak için tasarlanmamıştır. Kullanıcıların metin tabanlı dilleri kullanabilmeleri için ilk öğrenme aşamasını atlatmasına yardımcı olmak amacıyla tasarlanmıştır.
Öneri: API'nizin tamamını körü körüne bloklara dönüştürmeyin.
Kullanıcı girişi seçeneklerini göz önünde bulundurun
Kullanıcıdan parametre almanın üç yolu vardır. Açılır liste en kısıtlayıcı seçenektir ve basit eğitimler ve alıştırmalar için uygundur. Giriş alanı, daha fazla özgürlük sağlar ve daha yaratıcı etkinlikler için uygundur. Değer bloğu girişi (genellikle gölge blokla birlikte), yalnızca statik bir değer olmak yerine bir değeri (ör. rastgele sayı üreteci) hesaplama fırsatı sunar.
Öneri: Kullanıcılarınıza uygun bir giriş yöntemi seçin.
Ayrı koşullu ve döngü blokları kullanın
Yeni kullanıcılar için en zor bloklar koşullu ifadeler ve döngülerdir. Blok tabanlı birçok ortamda bu iki blok da aynı "Denetimler" kategorisinde gruplandırılır ve her iki blok da aynı şekle ve renge sahiptir. Bu durum, yeni kullanıcıların iki bloku birbirine karıştırması nedeniyle genellikle can sıkıcı sonuçlara yol açar. Blockly, koşullu ifadeleri ve döngüleri her biri farklı renkte olacak şekilde ayrı "Mantık" ve "Döngüler" kategorilerine taşımanızı önerir. Bu, benzer şekillere sahip olsalar da farklı şekilde davranan farklı fikirler olduğunu gösterir.
Öneri: Koşullu ifadeleri ve döngüleri ayrı tutun.
Değişken sayıda girişi işleme
Belirli bloklar için değişken sayıda giriş gerekebilir. Örneğin, rastgele bir sayı grubunu toplayan bir toplama bloğu veya rastgele bir elseif yan tümcesi grubu içeren bir if/elseif/else bloğu ya da rastgele sayıda başlatılmış öğe içeren bir liste kurucu. Her birinin avantajları ve dezavantajları olan birkaç strateji vardır.
a) En basit yaklaşım, kullanıcının bloğu daha küçük bloklardan oluşturmasını sağlamaktır. İki adet iki basamaklı toplama bloğu yerleştirerek üç sayı ekleme buna örnek olarak verilebilir. Başka bir örnek de yalnızca if/else blokları sağlamak ve kullanıcının elseif koşulları oluşturmak için bunları iç içe yerleştirmesini sağlamaktır.
Bu yaklaşımın avantajı, başlangıçta basit olmasıdır (hem kullanıcı hem de geliştirici için). Dezavantajı, çok sayıda iç içe yerleştirme olduğunda kodun çok hantal hale gelmesi ve kullanıcının kodu okumasının ve sürdürmesinin zorlaşmasıdır.
b) Alternatif olarak, bloku dinamik olarak genişleterek her zaman sonunda bir boş giriş olacak şekilde ayarlayabilirsiniz. Benzer şekilde, blok sonunda iki boş giriş varsa son girişi siler. Bu, App Inventor'un ilk sürümünde kullanılan yaklaşımdır.
Otomatik olarak büyüyen bloklar, App Inventor'un kullanıcıları tarafından birkaç nedenden dolayı beğenilmemiştir. İlk olarak, her zaman ücretsiz bir giriş vardı ve program hiçbir zaman "tamamlanmadı". İkincisi, yığının ortasına öğe eklemek can sıkıcıydı. Bunun nedeni, düzenlemenin altındaki tüm öğelerin bağlantısının kaldırılması ve yeniden bağlanmasıydı. Bununla birlikte, sıra önemli değilse ve kullanıcılar programlarında boşluklar olduğunda rahatsız olmazsa bu çok kullanışlı bir seçenektir.
c) Bazı geliştiriciler, boşluk sorununu çözmek için girişleri manuel olarak ekleyen veya kaldıran bloklara +/- düğmeleri ekler. Open Roberta, alttan giriş eklemek veya kaldırmak için bu tür iki düğme kullanır. Diğer geliştiriciler, yığının ortasından ekleme ve silme işlemlerinin yapılabilmesi için her satıra iki düğme ekler. Diğerleri, grubun yeniden sıralanabilmesi için her satıra iki yukarı/aşağı düğmesi ekler.
Bu strateji, blok başına yalnızca iki düğmeden satır başına dört düğmeye kadar değişen bir seçenek yelpazesidir. Bir tarafta kullanıcıların ihtiyaç duydukları işlemleri yapamamaları tehlikesi varken diğer tarafta kullanıcı arayüzü, Enterprise uzay gemisinin köprüsü gibi düğmelerle dolu.
d) En esnek yaklaşım, bloğa bir değiştirici balonu eklemektir. Bu, ilgili blok için yapılandırma iletişim kutusunu açan tek bir düğme olarak gösterilir. Öğeler dilediğiniz zaman eklenebilir, silinebilir veya yeniden düzenlenebilir.
Bu yaklaşımın dezavantajı, değiştiricilerin yeni başlayan kullanıcılar için sezgisel olmamasıdır. Değiştiricileri tanıtmak için bir tür talimat gerekir. Küçük çocukları hedefleyen Blockly tabanlı uygulamalarda değiştirici kullanılmamalıdır. Bu kısayollar, bir kez öğrendikten sonra ileri düzey kullanıcılar için çok değerlidir.
Öneri: Her stratejinin avantajları ve dezavantajları vardır. Kullanıcılarınız için doğru olanı seçin.