一、简介
在上一篇文章中,介绍了如何 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 技术进行代码优化。
评论