作者小白喵 u

豆包 MarsCode

豆包MarsCode 是基于字节跳动豆包大模型打造的的开发工具,豆包大模型的相关应用包括豆包 APP,它在苹果 App Store 和各大安卓应用市场的 AIGC 类应用中下载量排名第一。

作为豆包代码模型的具体应用, 豆包MarsCode 是将代码理解、生成、优化、推荐、补全、审查等多维能力融为一体的工具,豆包MarsCode IDE 内置了 AI 助手,提供多种语言框架模版将为开发者提供更加快捷便利的项目开发服务。

我会从多个维度进行评估

  • 关于启动速度
    本次测试是基于网页端,在本地网速正常的情况下,豆包MarsCode 的页面打开很流畅,响应时间很短,创建新项目大约在 3-4s。
  • 关于稳定性
    稳定性良好,在连续使用过程中没有出现网页崩溃现象。
  • 需求分析
  • 云端 IDE

对于我这个小白用户来讲,最开始吸引我的是云端 IDE 随时随地开发的标语,真的不想大夏天背着几公斤重的笔记本到处跑,虽然很有助于减肥::>_<::。

  • 不受本地资源限制

弹性的云端资源对项目开发能力支持,不用担心本地计算机的问题,很方便。

  • AI 编程助手

自己摸索中的小白很喜欢这个功能,代码补全可以节省很多重复工作的力气,代码注释可以让小白更加理解这段代码的意义和养成注释的好习惯,代码解释随时为小白补充新的知识。

顺便夸夸 UI 组的设计同学,这界面真干净好看,非常喜欢。

体验项目用例

26 号截止时间紧的小白决定写一个贪吃蛇的项目来看看测试运行效果吧,大部分被自动补全了,那就把大致思路和部分实际运用效果写出来吧,有机会再尝试 Github 导入功能,咳咳经典永不过时。。。

  1. 项目模板创建登陆账号后创建新项目,选择 Java 对应模版,输入项目名称 Snake 并填写项目描述后点击创建。

我的豆包 MarsCode 体验官之旅_初始化

初始化项目后,进入工作空间。文件导览区域有官方写好的 README.md 文件,对小白很友好,介绍栏还用了更加经典的 Hello World 项目模板做示范介绍。

我的豆包 MarsCode 体验官之旅_图形用户界面_02

  1. 更改包名为SNAKE,创建主类SnakeGame,用于创建游戏窗口初始化。 创建一个Snake类,管理蛇的长度。 创建一个Node类,表示蛇的节点。 创建一个Food类,随机生成食物。

我的豆包 MarsCode 体验官之旅_开发者_03

3. 使用Swing库创建图形用户界面,JFrame是Java编程语言中用于创建图形用户界面(GUI)的一个类,它属于Swing图形用户界面工具包的一部分,Swing提供一套丰富的组件构建图形用户界面。 增加一个initPanel方法,初始化界面。设置窗体大小位置等。

我的豆包 MarsCode 体验官之旅_初始化_04

  1. Node横纵坐标确定位置,蛇和食物都可以用节点,再创建一个随机生成位置的方法,Snake类选择使用LinkedList,可以高效插入删除操作,建立一个构造方法初始化蛇,创建多个节点作为初始长度。在主类中定义一个Snake成员变量和Food成员变量。在paint方法中添加绘制网格、蛇、食物。

我的豆包 MarsCode 体验官之旅_图形用户界面_05

当我绘制好网格后,想要运行看看效果的时候,意外发生了,AI助手告诉我:如果你的程序实际上不需要图形界面,你可以重构代码,移除对 JFrame 的依赖,这样就不会有图形初始化的问题。 在有图形环境的机器上运行最简单的解决办法是将程序移到有图形环境的机器上运行,比如你的本地桌面。 

我的豆包 MarsCode 体验官之旅_图形用户界面_06

 一个小白此时悄悄的碎了。。。

ok按照AI助手的说法,我打开本地电脑,开始将豆包MarsCode当作辅助继续进行编写,写好的代码最后将在eclipse上运行。

  1. 在Snake类中定义一个枚举类型Direction,并定义一个Direction的成员变量和move方法。
public enum Direction {
    UP,DOWN,LEFT,RIGHT
}
    ***   ***   ***
        ...
if(isLiving){
        Node head = body.getFirst();
        switch (direction){
            case UP:
                // 在当前蛇头的位置向上移动一格,并将新的位置添加到蛇身列表的头部
                body.addFirst(new Node(head.getX(),head.getY()-1));
                break;
            case DOWN:
                // 在当前蛇头的位置向下移动一格,并将新的位置添加到蛇身列表的头部
                body.addFirst(new Node(head.getX(),head.getY()+1));
                break;
            case LEFT:
                // 在当前蛇头的位置向左移动一格,并将新的位置添加到蛇身列表的头部
                body.addFirst(new Node(head.getX()-1,head.getY()));
                break;
            case RIGHT:
                // 在当前蛇头的位置向右移动一格,并将新的位置添加到蛇身列表的头部
                body.addFirst(new Node(head.getX()+1,head.getY()));
                break;
           
        body.removeLast();
                    ...
  1. 在主类中创建定时器,定时重绘界面。
  ...
  
    timer=new Timer();
//初始化定时器
/**
 * 初始化计时器,用于控制蛇的移动及食物的随机生成
 */
    
    TimerTask timerTask=new TimerTask() {
        @Override
        public void run() {
            snake.move();
          
            Node head = snake.getBody().getFirst();
            if(head.getX()==food.getX()&&head.getY()==food.getY()){
                snake.eat(food);
                food.random();
            }
            //重绘游戏棋盘
            jPanel.repaint();
        }
    };
 
    timer.scheduleAtFixedRate(timerTask,0,100);
}
    ...
    `

7. 在Snake类中增加eat方法。定时器调用eat方法。

  1. 在主类添加键盘监听。
  2. 添加边界判定。

最终运行效果

我的豆包 MarsCode 体验官之旅_图形用户界面_07


体验总结

豆包MarsCode 的代码补全功能真的好便利啊,节省了很多时间;还可以分区域测试,很便捷;代码注释也很简明准确,编写体验感非常舒适;开发过程中出现了的问题 AI 会自动分析开发者意图并将修改前和修改后分别用红色、绿色的模块进行区分,真的很喜欢这种设计,以前写完要分别看两个区块看着看着就串行了;对于不懂的调用方法 AI 助手也给出了详细的教学,小白解惑学习神器之一;运行速度比本地快,整体体验很好。

总的来说,豆包MarsCode 在这个领域表现的十分出色,达到了心理预期,是现代软件开发的优秀助手,技术创新与突破的勇敢尝试,为开发者带来了新的开发体验,期待豆包MarsCode 在 AI 领域和云端 IDE 上有更多的创新,未来能带给开发者们更多惊喜。