ภาษาแบบบล็อกแตกต่างจากภาษาแบบข้อความในหลายๆ ด้าน สาเหตุหลักคือภาษาแบบบล็อกออกแบบมาเพื่อผู้ใช้มือใหม่ ต่อไปนี้คือรายการสิ่งที่ควรพิจารณาเมื่อออกแบบภาษาแบบบล็อกของคุณเอง
ใช้รายการแบบฐาน 1
นักเขียนโปรแกรมมือใหม่มักจะตกใจเมื่อพบรายการแบบฐาน 0 เป็นครั้งแรก ด้วยเหตุนี้ Blockly จึงใช้รูปแบบเดียวกับ Lua และ Lambda Moo โดยทำให้การจัดทำดัชนีรายการและสตริงเป็นแบบฐาน 1
สำหรับการใช้งาน Blockly ขั้นสูง ระบบจะรองรับลิสต์แบบนับจาก 0 เพื่อให้การเปลี่ยนเป็นข้อความง่ายขึ้น สําหรับผู้ชมที่อายุน้อยหรือผู้ชมที่เพิ่งเริ่มใช้งาน เรายังคงแนะนําให้ใช้การจัดทำดัชนีแบบ 1 ฐาน
คําแนะนํา: 1 คือตัวเลขแรก
รองรับกฎการตั้งชื่อแบบเสรี
นักเขียนโปรแกรมมือใหม่ไม่คิดว่า location_X
และ location_x
เป็นตัวแปรที่แตกต่างกัน ด้วยเหตุนี้ Blockly จึงยึดตามแนวทางของ BASIC และ HTML ในการทำตัวแปรและฟังก์ชันให้ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ Scratch ใช้แนวทางที่ละเอียดกว่า (ดังที่เห็นทางด้านขวา) และคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่สำหรับชื่อตัวแปร แต่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่สำหรับการตรวจสอบความเท่ากัน
นอกจากนี้ Blockly ไม่ได้กำหนดให้ตัวแปรและฟังก์ชันต้องเป็นไปตามรูปแบบ [_A-Za-z][_A-Za-z0-9]*
ทั่วไป หากต้องการตั้งชื่อตัวแปรเป็น List
of zip codes
หรือ רשימת מיקודים
ก็ไม่มีปัญหา
คําแนะนํา: ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ อนุญาตชื่อใดก็ได้
ทําให้ตัวแปรทั้งหมดเป็นแบบส่วนกลาง
โปรแกรมเมอร์มือใหม่ก็เข้าใจขอบเขตได้ยากเช่นกัน ด้วยเหตุนี้ บล็อกลี่จึงทำตามแนวทางของ Scratch โดยใช้ตัวแปรทั้งหมดเป็นแบบส่วนกลาง ข้อเสียเพียงอย่างเดียวของตัวแปรส่วนกลางคือการทำซ้ำแบบย้อนกลับนั้นซับซ้อนกว่า (ต้องดันและดึงตัวแปรลงในลิสต์) แต่นั่นเป็นเทคนิคการเขียนโปรแกรมที่อยู่นอกเหนือขอบเขตของผู้ใช้เป้าหมายของ Blockly
คําแนะนํา: ขอบเขตไม่ตรงกับขอบเขตของการตรวจสอบ ให้ปล่อยไว้ก่อน
พิจารณาวิธีจัดการค่าผลลัพธ์ที่ไม่บังคับ
ฟังก์ชันหลายรายการในการเขียนโปรแกรมแบบข้อความจะดำเนินการ แล้วแสดงผลค่า
ระบบอาจใช้หรือไม่ใช้ผลลัพธ์นี้ก็ได้ ตัวอย่างเช่น pop()
ฟังก์ชันของกอง ระบบอาจเรียกใช้ Pop เพื่อรับและนำองค์ประกอบสุดท้ายออก หรืออาจเรียกใช้เพื่อนำองค์ประกอบสุดท้ายออกโดยไม่สนใจค่าที่แสดงผล
var last = stack.pop(); // Get and remove last element.
stack.pop(); // Just remove last element.
โดยทั่วไปแล้ว ภาษาแบบบล็อกไม่เหมาะกับการละเว้นค่าผลลัพธ์ บล็อกค่าต้องเสียบเข้ากับสิ่งที่ยอมรับค่า ปัญหานี้แก้ไขได้หลายวิธี
ก) หลีกเลี่ยงปัญหา ภาษาแบบบล็อกส่วนใหญ่ออกแบบภาษาเพื่อหลีกเลี่ยงกรณีเหล่านี้ เช่น Scratch ไม่มีบล็อกที่มีทั้งผลข้างเคียงและค่าที่แสดงผล
ข) ระบุ 2 บล็อก หากพื้นที่ในกล่องเครื่องมือไม่ใช่ปัญหา วิธีแก้ปัญหาง่ายๆ คือให้บล็อกประเภทนี้ 2 บล็อก โดยให้บล็อกหนึ่งมีและอีกบล็อกหนึ่งไม่มีค่าผลลัพธ์ ข้อเสียคืออาจทําให้กล่องเครื่องมือสับสนเพราะมีบล็อกที่คล้ายกันจํานวนมาก
ค) เปลี่ยนรูปแบบบล็อก 1 บล็อก ใช้เมนูแบบเลื่อนลง ช่องทําเครื่องหมาย หรือตัวควบคุมอื่นๆ ที่อนุญาตให้ผู้ใช้เลือกว่าจะมีค่าผลลัพธ์หรือไม่ จากนั้นบล็อกจะเปลี่ยนรูปร่างตามตัวเลือก ตัวอย่างของการดำเนินการนี้สามารถดูได้ในรายการบล็อกการเข้าถึงของ Blockly
ง) บริโภคมูลค่า App Inventor เวอร์ชันแรกสร้างบล็อกไปป์พิเศษซึ่งจะกินค่าที่เชื่อมต่อ ผู้ใช้ไม่เข้าใจแนวคิดนี้ และ App Inventor เวอร์ชันที่ 2 ได้นําบล็อกไปป์ออกและแนะนําให้ผู้ใช้กําหนดค่าให้กับตัวแปรชั่วคราวแทน
คําแนะนํา: กลยุทธ์แต่ละอย่างมีข้อดีและข้อเสีย ให้เลือกกลยุทธ์ที่เหมาะกับผู้ใช้
สร้างโค้ดที่อ่านได้
ผู้ใช้ Blockly ขั้นสูงควรดูโค้ดที่สร้างขึ้น (JavaScript, Python, PHP, Lua, Dart ฯลฯ) และจดจำโปรแกรมที่เขียนได้ทันที ซึ่งหมายความว่าจะต้องใช้ความพยายามเพิ่มเติมเพื่อให้โค้ดที่เครื่องสร้างขึ้นนี้อ่านได้ง่าย วงเล็บที่ไม่จำเป็น ตัวแปรตัวเลข เว้นวรรคที่อัดแน่น และเทมเพลตโค้ดที่เขียนอย่างละเอียดล้วนเป็นอุปสรรคต่อการสร้างโค้ดที่เรียบร้อย โค้ดที่สร้างขึ้นควรมีความคิดเห็นและเป็นไปตามคู่มือสไตล์ของ Google
คําแนะนํา: ภูมิใจกับโค้ดที่สร้างขึ้น แสดงต่อผู้ใช้
ยอมรับความแตกต่างระหว่างภาษา
ผลข้างเคียงของความต้องการโค้ดที่สะอาดคือลักษณะการทํางานของ Blockly ส่วนใหญ่จะกําหนดจากลักษณะการทํางานของภาษาที่คอมไพล์ข้าม ภาษาเอาต์พุตที่ใช้กันมากที่สุดคือ JavaScript แต่หาก Blockly ต้องคอมไพล์ข้ามภาษา คุณไม่ควรพยายามรักษาลักษณะการทำงานที่ตรงกันทุกประการในทั้ง 2 ภาษา เช่น ใน JavaScript สตริงว่างจะเป็นเท็จ แต่ใน Lua จะเป็นจริง การกําหนดรูปแบบลักษณะการทํางานแบบเดียวสําหรับโค้ดของ Blockly ให้ดําเนินการโดยไม่คํานึงถึงภาษาเป้าหมายจะส่งผลให้โค้ดไม่สามารถบํารุงรักษาได้ ซึ่งดูเหมือนว่ามาจากคอมไพเลอร์ GWT
คําแนะนํา: Blockly ไม่ใช่ภาษา ให้ภาษาที่มีอยู่ส่งผลต่อลักษณะการทํางาน