一、简介
在上一篇文章中,介绍了如何 DIY《基于 MicroBlocks 的"双模态"遥控智能小车》。智能小车程序基于 MicroBlocks 编写,采用代码积木方式,其代码基于 GPBlocks 语言。
GPBlocks 是一种通用的、可扩展的、基于块的编程语言,它提供了一个直观的界面,使得编程变得更加容易理解和操作。
由于小编刚也是开始学习使用 GPBlocks,对 GPBlocks 语法还不是很熟悉,因此希望借助 AI 进行代码优化和重构,让程序更易读、方便后续维护。
本篇文章说明在 VSCode 工具中,采用 AI(阿里通义灵码)对智能小车程序代码进行重构,帮助开发者更好的理解 MicroBlocks 开发和代码优化。
二、开发环境
VSCode
一个强大的代码编辑器,支持多种编程语言和框架。访问 VSCode 官网下载并安装 VSCode。
VSCode 插件 gp-lang
这个插件为 VSCode 提供了 GPBlocks 语言的支持,包括语法高亮、代码提示等功能。打开 VSCode,进入插件市场。搜索并安装“gp-lang”插件。
gp-lang插件
VSCode 插件 通义灵码
这个插件集成了 AI 技术,可以帮助开发者进行代码优化和重构,提高代码质量和可维护性。打开 VSCode,进入插件市场。搜索并安装“通义灵码”插件。
通义灵码插件
三、AI 重构代码
1、代码现状
刚开始写 MicroBlocks 代码,图形化的方式,开发调试比较方便。在接收蓝牙信号时,写了前、后、左、右的小车动作,在接收红外信号时,又写了以便前、后、左、右的小车动作,因此积木代码有很多冗余,需要进行重构。
智能小车MicroBlocks代码现状
2、让 AI 分析代码
在 VSCode 中,选择 GPBlocks 代码,让 AI 分析代码,给出优化建议。向通义灵码提问:“这个程序中,先前、向后、向右、向左、停止,这几个动作,有重复代码,怎样可以让重复代码减少?”通义灵码回复是:通过定义 5 个动作函数,从而减少重复代码。同时它给出了具体的 5 个动作函数的定义,可以直接使用,真的很棒。
AI分析代码的建议
AI建议的新代码
3、代码重构
首先定义 5 个动作函数,分别是:向前、向后、向左、向右、停止。这样可以在不同的触发条件下调用这些函数,而不需要重复编写相同的代码。
重构定义新动作函数
// 定义动作函数
to moveForward {
'[tft:text]' 'go' 5 70 (colorSwatch 35 190 30 255)
'xueersi motor' 'M1' 'bwd' 70
'xueersi motor' 'M2' 'fwd' 70
}
to moveBackward {
'[tft:text]' 'back' 5 70 (colorSwatch 35 190 30 255)
'xueersi motor' 'M1' 'fwd' 65
'xueersi motor' 'M2' 'bwd' 65
}
to turnLeft {
'[tft:text]' 'left' 5 70 (colorSwatch 35 190 30 255)
'xueersi motor' 'M1' 'fwd' 65
'xueersi motor' 'M2' 'fwd' 65
waitMillis 1000
}
to turnRight {
'[tft:text]' 'right' 5 70 (colorSwatch 35 190 30 255)
'xueersi motor' 'M1' 'bwd' 70
'xueersi motor' 'M2' 'bwd' 70
waitMillis 1000
}
to stopCar {
'[tft:text]' 'stop' 5 70 (colorSwatch 35 190 30 255)
'stop motor'
}
复制代码
4、调用动作函数
在接收到蓝牙信号、红外信号时,调用动作函数,驱动小车执行向前、向后、向左、向右、停止动作。
重构后的MicroBlocks主程序
重构后的 MicroBlocks 主程序,更为精简,更通俗易懂。
script 475 264 {
whenCondition (bleRadio_messageReceived)
'[display:mbDisplayOff]'
'[tft:text]' 'BLE Receive' 5 5 (colorSwatch 35 190 30 255)
'[tft:text]' (bleRadio_receivedString) 5 35 (colorSwatch 35 190 30 255)
if ((bleRadio_receivedString) == 'go') {
moveForward
}
if ((bleRadio_receivedString) == 'back') {
moveBackward
}
if ((bleRadio_receivedString) == 'left') {
turnLeft
}
if ((bleRadio_receivedString) == 'right') {
turnRight
}
if ((bleRadio_receivedString) == 'stop') {
stopCar
}
}
script 119 267 {
whenCondition (ir_code_received)
'[display:mbDisplayOff]'
'[tft:text]' 'IR Receive' 5 10 (colorSwatch 35 190 30 255)
'[tft:text]' (ir_last_code) 5 35 (colorSwatch 35 190 30 255)
if ((ir_last_code) == 14) {
moveForward
}
if ((ir_last_code) == 26) {
moveBackward
}
if ((ir_last_code) == 3) {
turnLeft
}
if ((ir_last_code) == 0) {
turnRight
}
if ((ir_last_code) == 31) {
stopCar
}
}
复制代码
四、总结
本篇文章描述了如何在 VScode 开发工具中,通过阿里通义灵码插件,对智能小车 MicroBlocks 程序进行 AI 分析,获得建议,及进行重构,让代码更易读,方便后续维护。
通过使用 VSCode 和相关插件,我们可以有效地利用 AI 技术来提升代码质量,简化开发流程,从而提高开发效率和代码的可维护性。
希望本文章能够帮助开发者更好地理解和应用 MicroBlocks 的 GPBlocks 语言框架,以及如何利用 AI 技术进行代码优化。
评论