如何在 MicroBlocks 中创建代码库 [译]

什么是代码库(Library)

每当我们写代码时,发现自己一直在重复一组指令或某些程序时,对它们进行一次编码,并将结果转化为一个库,这样我们和其他人以后就可以通过简单地加载库并在我们的程序中使用它,这可能会有帮助。

因此,库是一个代码集合,通常专注于启用一个特定的组件、外围设备或功能。区分库和程序的重要一点是,库是一个组件或构件,将在程序中使用,但它本身并不是一个完整的程序。

库可以通过使用特定语言开发环境的集成开发环境来创建,也可以通过用开始创建集成开发环境时的原始源语言编写代码来创建。

库是如何构成的

一个特定的目的
一个干净的用户界面
而且不应该做不相关的事情

为了实现上述目标,我们需要做一些规划和思考。

目标

库应该是用一个特定的功能来实现一个确定的结果。

为了实现这一目标,我们需要考虑手头的任务,并确保将其简化为最重要的单一功能,并在库中捕获。无论它是驱动一个硬件,还是执行某种类型的数据操作。库的目标应该是明确和简洁的。

界面(接口)

这方面是库中最明显和最重要的部分。我们图书馆的用户将通过用户界面与我们的代码互动,并通过它来判断其可用性和清晰度。

为了组织我们库的界面,我们需要考虑我们库的输入和输出。

输入将构成我们从用户那里需要的所有数据,以完成库需要做的事情。这些将被组织成我们库的输入参数。

而输出是库处理输入的结果。有些库只是执行一些操作,这些操作将导致一些物理变化。其他的库会有一个明确定义的返回值。

重要的是要记住,不是所有的库函数都会返回一个值。

相关性

大多数库的代码都是从用户编码的自定义块功能开始的。

我们意识到我们需要一个缺失的功能,于是编写一些自定义块来弥补这个缺失的功能。然后我们决定这将是有帮助的功能,并决定将自定义块转换为一个库。

我们很容易得意忘形,开始在代码中添加越来越多的功能。这导致了一个非常复杂的最终结果。最好的办法是计划好需要做的事情,并只关注代码来实现该功能。

通常情况下,有必要对某些功能进行分解,并将它们组合在一起,组成库。这些将以相关的功能块形式出现,完成同一原始任务的不同方面。

一个很好的例子是MicroBlocks中的LED显示库。它包含了操作作为一个整体的 LED 面板的积木块,以及操作单个 LED 像素,还有显示字母和数字的能力。

我们来写一个

为了简单起见,我们将着重于使用 MicroBlocks的IDE 开发一个简单的库。

微型块库的块的长度必须不超过1000字节。

目的

我们想实现的功能是。

通过允许发送任何大小的信息来增强 micro:bit 设备默认的19字节的无线广播能力。

我们应该能够处理任何类型的数据:字符串、数字、列表和布尔。

另外,如果我们发送的信息超过了默认的19字节,我们应该在设备的 LED 面板上显示缓冲区的数量。

以上功能列表是我们定义库的一个好的起点。

界面(接口)

我们的广播信息块将被命名为 RadioMsg。

为了进行信息处理,我们需要用户给我们一个包含信息本身的参数。该参数将被命名为:msg,它将是一个数字/字符串输入。

为了确定消息内容的类型,我们可以依靠MicroBlocks的 "运算" 积木块来报告输入的类型。

为了满足显示大于19字节的信息的缓冲区计数的可选要求,我们将使用一个开关作为附加参数。它将被命名为。ShowBuf,它将使用一个名为 bufYN 的布尔输入域。

基于这些最初的输入决定,我们的积木块头(帽子积木)将看起来像这样。

由于我们的目标非常简单,我们的库中只需要一个块。

代码块

现在,让我们来看看我们需要的代码,以完成所有的消息处理。我们将分组检查所有需要的块,并详细解释其功能。

我们从定义一些局部变量开始。

延迟将被用来给无线电信息的缓冲区留出空间,所以我们不会使无线电传输不堪重负。radMsgSize 用于确定每个消息的分块大小。msgLen 被设置为要发送的消息的长度。buffers 设置为我们需要发送的19字节缓冲区的数量。rem 被设置为最后一个消息缓冲区大小的剩余部分。

下一组积木块查看要发送的消息,确定其类型,并将其转换为字符串格式。

列表成为逗号分隔的字符串。
数字成为数字字符串。
布尔运算成为真/假字符串

我们使用列表块的连接操作积木块来进行转换。

现在,我们处于开始处理消息的实际位置。

如果要发送的信息不大于我们的 radMsgSize(19字节),那么我们就直接发送。

如果它大于 radMsgSize,那么我们就用计算出的 buffers 变量作为循环计数器,分别发送每块信息。

可选的参数 bufYN 被检查,看我们是否需要在设备的LED面板上显示缓冲区的数量。

为了把一条长消息分割成 radMsgSize 的小块,我们用块拷贝积木把截短的消息放入本地变量 msgPart,并把每个小块发送出去。

一旦所有的主缓冲区发送完毕,在信息的最后部分仍然可能有剩余。

这是由前面计算的 rem>0 的条件表示的。

如果是这样,我们在这里发送最后一个消息片段。

我们代码的最后一部分是清除设备显示,如果我们显示的是在可选参数 bufYN 中选择的缓冲区计数。

这样,我们的RadioMsg库块的代码部分就完成了。

现在我们需要继续把这个代码块变成 MicroBlocks 库模块的部分。

转换为库格式

库模块是由扩展名UBL来定义的。

我们需要把我们编码的自定义块,转换成具有适当扩展名的文件。

MicroBlocks实际上为我们提供了完成这一任务的方法,非常容易。

当我们在设置菜单中选择显示高级块选项时,我们会在文件菜单中看到另一个菜单项:导出功能为库。

这个选项为我们提供了一种方法,可以将我们创建的自定义块保存为一个库格式的文件。

我们为我们的库输入名称 "RadioMsg",然后点击确定。

我们将被带到系统文件保存对话框,在那里我们可以把库文件 RadioMsg.ubl 放到我们系统的一个理想目录中。

一旦完成,我们就可以进入 MicroBlocks IDE的 Libraries +部分,将我们的 Library 从我们保存它的地方直接加载到我们希望的任何程序中。

通过分享 RadioMsg.ubl 文件,我们将为其他用户提供一种方法,以同样的方式利用我们的库。

我希望你能从这篇文章中得到足够的信息来尝试创建你自己的库。

不要忘了,还有一种方法可以直接用 IDE 开发的语言(GP)编写 Library 代码。

原文:https://wiki.microblocks.fun/create_a_library

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容