豆包MarsCode “一键Apply”功能测评:编程效率革新利器

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 豆包MarsCode的“一键Apply”功能旨在提升开发者编程效率,通过AI自动生成和应用代码,简化重复操作、精准修复错误、助力新项目开发及快速生成注释。安装插件后,在VSCode中与AI对话生成代码并点击Apply按钮即可完成应用,过程流畅高效。适用于C++、Java、Python等多语言环境,极大节省开发时间,降低手动操作风险。无论是资深开发者还是新手,都能从中受益,显著提升编程体验。

@TOC

本文正在参加豆包MarsCode上新Apply体验活动

前言

在当今快节奏的编程开发领域,效率无疑是开发者们追求的核心目标之一。豆包MarsCode新上线的“一键Apply”功能,正是瞄准了这一痛点,力求为开发者带来全新的高效编程体验。我们可以在vscode中进行豆包MarsCode插件的下载,如果你需要体验Apply的功能的话,插件版本一定要到达1.1.40 ,插件安装地址image.png

功能亮点

随着人工智能技术的飞速发展,编程领域也正经历着深刻变革。近期,豆包推出的 AI 编程工具 MarsCode 在开发者社区引发广泛关注。这是一款支持 C++、Java、Python、HTML 等多种主流编程语言的强大助手,集成了 AI 代码生成、代码解释、单元测试生成等丰富功能,为开发者带来全新编程体验。我们可以直接去官网进行功能的申请

image.png

1. 告别重复操作

在项目开发中,代码的复用与修改是常见场景。以往,将相同功能代码应用到不同模块,需重复复制粘贴与调试,令人苦不堪言。而“一键Apply”功能可将AI生成的代码片段自动应用到项目对应文件位置并形成Diff,无需手动打开文件等繁琐操作,极大简化了流程。
我们直接让编程小助手找到对应的错误,并且我们是不需要将正确的代码进行复制粘贴的操作,我们直接一键采纳就可以将正确的代码镶嵌到我们的源代码中去了

image.png

我们还能生成一个函数,然后插入到我们光标的位置image.png

2. 精准问题解决

无论是代码修改、错误修复、函数名称修改,还是代码注释生成等,该功能都表现出色。例如,在代码修改场景中,它能自动识别文件路径,按需求完成代码插入/修改;通过/fix指令可快速定位并修复代码错误,差异清晰呈现,一处修改处处应用;修改函数名称时,MarsCode能自动完成查找与替换,避免连锁错误。
在这里我们一键点击Apply,豆包编程小助手快速锁定我们的错误代码并且询问我们是否需要进行采纳
image.png

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include"list.h"
#include<iostream>
using namespace std;
class Pos
{
public:
    int _row;
    int _col;

    Pos(int row = 0, int col = 0)
        :_row(row)
        , _col(col)
    {
        std::cout << "Pos(int row, int col)" << std::endl;
    }

    Pos(const Pos& p)
        :_row(p._row)
        , _col(p._col)
    {
        std::cout << "Pos(const Pos& p)" << std::endl;
    }
};
int main()
{
    /*kai::list<int> lt1;
    lt1.push_back(1);
    lt1.push_back(2);
    lt1.push_back(3);
    lt1.push_back(4);*/

    //const kai::list<int> lt1(10, 1);//const得用const迭代器进行遍历

    //kai::list<int>::const_iterator it1 = lt1.begin();
    //while (it1 != lt1.end())
    //{
    //    //*it1 = 2;//我们这里是const迭代器是不能进行修改的操作的
    //    std::cout<< *it1 << " ";
    //    ++it1;
    //}
    //std::cout << std::endl;

    //for (auto e : lt1)
    //{
    //    std::cout << e << " ";
    //}
    //std::cout << std::endl;

    //kai::list<Pos> lt3;
    //Pos p1(1, 1);
    //lt3.push_back(p1);
    //lt3.push_back(Pos(2, 2));
    //lt3.push_back({ 3,3 });



    kai::list<int> lt1;
    lt1.push_back(1);
    lt1.push_back(2);
    lt1.push_back(3);
    lt1.push_back(4);
    lt1.push_front(0);
    lt1.push_front(-1);

    //    auto it1 = lt1.begin();

    kai::list<int>:: iterator it1 = lt1.begin();
    while (it1 != lt1.end())
    {
        std::cout << *it1 << " ";
        ++it1;
    }
    std::cout << std::endl;

    lt1.pop_front();
    lt1.pop_back();

    for (auto e:lt1 )
    {
        std::cout << e <<" ";
    }
    std::cout << std::endl;

    kai::list<int> lt2(lt1);//拷贝构造---没有写构造函数的话那么仅仅只是浅拷贝,而且一个对象修改会影响另一个对象
    for (auto e : lt2)
    {
        std::cout << e << " ";
    }
    cout << std::endl;

    kai::list<int> lt3(10, 1);
    lt2=lt3;

    return 0;
}

这个就是我们原先的代码经过豆包编程小助手Apply之后的代码,代码整体没有问题,并且代码的风格很新颖,并且我是只点击了Apply以及采纳,完全没有进行复制粘贴的操作,豆包编程小助手可以快速找到我们代码中错误的地方以及老旧不合适的地方,然后快速进行正确代码的更替操作

3. 助力新项目开发

在创建新项目时,“一键Apply”同样给力。以初始化React项目为例,MarsCode可提供初始化和安装依赖等功能,一键运行完成初始化,自动识别新增文件路径,创建新文件与代码,大幅提升开发起始阶段的效率。
可以快速进行对应文件的创建,并且可以放上对应正确的代码
这里我们让编程小助手帮我生成一个.c文件,文件中存放的是快排的代码
image.png

随后我们就可以看到小助手给我们生成的代码
image.png

#include <stdio.h>

// 交换两个元素的函数
void swap(int* a, int* b) {
    int t = *a;
    *a = *b;
    *b = t;
}

// 划分函数,将数组划分为两部分,一部分小于基准元素,一部分大于基准元素
int partition(int arr[], int low, int high) {
    int pivot = arr[high]; // 选择最后一个元素作为基准
    int i = (low - 1); // 小于基准元素的子数组的索引

    for (int j = low; j <= high - 1; j++) {
        // 如果当前元素小于或等于基准
        if (arr[j] <= pivot) {
            i++; // 增加小于基准元素的子数组的索引
            swap(&arr[i], &arr[j]); // 交换 arr[i] 和 arr[j]
        }
    }
    swap(&arr[i + 1], &arr[high]); // 将基准元素放到正确的位置
    return (i + 1); // 返回基准元素的索引
}

// 快速排序函数
void quickSort(int arr[], int low, int high) {
    if (low < high) {
        // 划分索引,arr[p] 现在在正确的位置
        int pi = partition(arr, low, high);

        // 分别对划分后的两部分进行排序
        quickSort(arr, low, pi - 1);
        quickSort(arr, pi + 1, high);
    }
}

// 打印数组的函数
void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++)
        printf("%d ", arr[i]);
    printf("\n");
}

// 主函数,用于测试快速排序
int main() {
    int arr[] = {10, 7, 8, 9, 1, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
    printf("原始数组: \n");
    printArray(arr, n);
    quickSort(arr, 0, n - 1);
    printf("排序后的数组: \n");
    printArray(arr, n);
    return 0;
}

4.代码快速切换

在我们的日常编程中,可能会出现一个函数名的错误,我们需要将全局的这个函数名都进行修改的操作,但是一个个改的话会显得十分麻烦,稍有失误的话还会导致整个文件出现代码问题,但是我们的豆包编程小助手就可以完美解决这个问题,直接将我们代码中我们想要进行修改的函数名称进行修改的操作
这里我们只需要点击这个Apply就能直接将更改的代码直接贴到源代码中,将我们对应的代码进行修改的操作

image.png

下面是修改的代码

#include <stdio.h>

// 交换两个元素的函数
void swap(int* a, int* b) {
    int t = *a;
    *a = *b;
    *b = t;
}

// 划分函数,将数组划分为两部分,一部分小于基准元素,一部分大于基准元素
int partition(int arr[], int low, int high) {
    int pivot = arr[high]; // 选择最后一个元素作为基准
    int i = (low - 1); // 小于基准元素的子数组的索引

    for (int j = low; j <= high - 1; j++) {
        // 如果当前元素小于或等于基准
        if (arr[j] <= pivot) {
            i++; // 增加小于基准元素的子数组的索引
            swap(&arr[i], &arr[j]); // 交换 arr[i] 和 arr[j]
        }
    }
    swap(&arr[i + 1], &arr[high]); // 将基准元素放到正确的位置
    return (i + 1); // 返回基准元素的索引
}

// 快速排序函数
void qs(int arr[], int low, int high) {
    if (low < high) {
        // 划分索引,arr[p] 现在在正确的位置
        int pi = partition(arr, low, high);

        // 分别对划分后的两部分进行排序
        qs(arr, low, pi - 1);
        qs(arr, pi + 1, high);
    }
}

// 打印数组的函数
void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++)
        printf("%d ", arr[i]);
    printf("\n");
}

// 主函数,用于测试快速排序
int main() {
    int arr[] = {10, 7, 8, 9, 1, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
    printf("原始数组: \n");
    printArray(arr, n);
    qs(arr, 0, n - 1);
    printf("排序后的数组: \n");
    printArray(arr, n);
    return 0;
}

5.注释快速生成,一键Apply直接粘贴

我们在平常写代码的时候都会出现没注释看不懂代码的情况,那么我们这里将代码给豆包小助手,那么我们的豆包就可以直接进行注释的是生成,并且我们还可以让豆包小助手调整我们注释的详细程度,我们生成的注释可以直接通过Apply键呈现在我们的源代码中
我们这里让豆包小助手为当前的代码生成英文的注释,我们无序复制粘贴的操作,点击Apply就能改变原先的代码
image.png

#include <stdio.h>

// Function to swap two elements
void swap(int* a, int* b) {
    // Temporary variable to hold the value of *a
    int t = *a;
    // Assign the value of *b to *a
    *a = *b;
    // Assign the value of t (original *a) to *b
    *b = t;
}

// Function to partition the array into two parts, one with elements less than the pivot and the other with elements greater than the pivot
int partition(int arr[], int low, int high) {
    // Choose the last element as the pivot
    int pivot = arr[high];
    // Index of the smaller element
    int i = (low - 1);

    // Iterate through the array from low to high-1
    for (int j = low; j <= high - 1; j++) {
        // If the current element is less than or equal to the pivot
        if (arr[j] <= pivot) {
            // Increment the index of the smaller element
            i++;
            // Swap the current element with the element at the index of the smaller element
            swap(&arr[i], &arr[j]);
        }
    }
    // Swap the pivot element with the element at the index of the smaller element + 1
    swap(&arr[i + 1], &arr[high]);
    // Return the index of the pivot element
    return (i + 1);
}

// Function to perform quick sort on the array
void qs(int arr[], int low, int high) {
    // If the low index is less than the high index
    if (low < high) {
        // Partition the array and get the pivot index
        int pi = partition(arr, low, high);

        // Recursively sort the elements before the pivot
        qs(arr, low, pi - 1);
        // Recursively sort the elements after the pivot
        qs(arr, pi + 1, high);
    }
}

// Function to print the array
void printArray(int arr[], int size) {
    // Iterate through the array and print each element
    for (int i = 0; i < size; i++)
        printf("%d ", arr[i]);
    // Print a new line after the array
    printf("\n");
}

// Main function to test the quick sort algorithm
int main() {
    // Array to be sorted
    int arr[] = {10, 7, 8, 9, 1, 5};
    // Calculate the size of the array
    int n = sizeof(arr) / sizeof(arr[0]);
    // Print the original array
    printf("Original array: \n");
    printArray(arr, n);
    // Sort the array using quick sort
    qs(arr, 0, n - 1);
    // Print the sorted array
    printf("Sorted array: \n");
    printArray(arr, n);
    // Return 0 to indicate successful execution
    return 0;
}

使用体验

在实际使用中,安装豆包MarsCode编程助手后,在VSCode问答区域与AI对话,生成代码后点击Apply按钮,整个过程流畅自然。代码应用准确迅速,在多个项目场景测试中,均有效节省了开发时间,降低了手动操作带来的错误风险。如豆包自己的话来说,总体有以下几点
image.png

作为一个AI编程助手,我有以下优点:

  • 准确性:我可以提供准确的编程建议和解决方案,帮助用户解决各种编程问题。
  • 高效性:我可以快速响应用户的问题,并提供高效的代码实现和优化建议。
  • 专业性:我具备丰富的编程知识和经验,可以提供专业的编程指导和建议。
  • 灵活性:我可以根据用户的需求和要求,提供灵活的编程解决方案和建议。
  • 易用性:我可以通过简单的交互方式,帮助用户快速解决编程问题,提高编程效率。
  • 总的来说,我可以帮助用户提高编程效率,解决各种编程问题,是一个非常有用的编程助手。

总结

豆包MarsCode的“一键Apply”功能是一款极具实用性的编程辅助工具,它凭借强大的自动化能力,有效解决了开发者日常工作中的诸多难题,显著提升了编程效率。无论是经验丰富的资深开发者,还是初入行业的新手,都能从这一功能中获益。期待未来豆包MarsCode能带来更多创新功能,持续为编程开发领域注入新的活力。

目录
相关文章
|
10月前
|
弹性计算 运维 监控
|
11月前
|
安全 数据管理 关系型数据库
解锁数据管理的无限可能——探索 Teable 多维表格
Teable 是一个基于 Postgres 构建的企业级多维表格解决方案,提供卓越性能、灵活多维表格、丰富视图、精细权限管理、实时协作及自动化工作流等核心特性,支持私有部署,助力企业高效管理海量数据,加速数字化转型。
926 3
|
7月前
|
自然语言处理 前端开发 Cloud Native
吐血整理Bolt.diy 部署与应用攻略
Bolt.diy 是一款无需代码基础即可创建个性化网站的工具,基于阿里云函数计算 FC 和百炼大模型服务,通过自然语言交互实现全栈开发。用户只需描述需求,Bolt.diy 即可快速生成网站,支持灵活定制与二次开发。部署简单,提供免费试用额度,适合从初学者到专业开发者各类人群。无论是快速原型设计、教育工具开发还是企业级应用,Bolt.diy 均展现出高效与便捷的优势。然而,新手可能需要更多时间熟悉云服务配置与高级功能。
674 3
|
7月前
|
人工智能 Java 程序员
《通义灵码2.0 AI 程序员体验官招募》 获奖名单公布
《通义灵码2.0 AI 程序员体验官招募》 获奖名单公布
290 1
|
Docker 容器
Docker必备国内镜像
Docker必备国内镜像
13745 0
|
9月前
|
人工智能 自然语言处理 Shell
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
仅用3分钟,百炼调用满血版Deepseek-r1 API,享受百万免费Token。阿里云提供零门槛、快速部署的解决方案,支持云控制台和Cloud Shell两种方式,操作简便。Deepseek-r1满血版在推理能力上表现出色,尤其擅长数学、代码和自然语言处理任务,使用过程中无卡顿,体验丝滑。结合Chatbox工具,用户可轻松掌控模型,提升工作效率。阿里云大模型服务平台百炼不仅速度快,还确保数据安全,值得信赖。
358582 71
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
|
人工智能 IDE Java
MarsCode AI 一款免费的代码辅助工具,值得一试
MarsCode是由字节跳动旗下公司推出的AI编程工具,旨在提升编码效率和质量。它既是一个云端集成开发环境(IDE),也支持作为VS Code和JetBrains等IDE的智能扩展,提供代码补全、生成、优化等功能,并支持多种编程语言。通过AI助手,MarsCode帮助开发者减少重复劳动,提高代码质量和可维护性,同时支持跨平台使用,为开发者带来便捷高效的编程体验。
2023 1
|
7月前
|
人工智能 自然语言处理 Cloud Native
🚀Bolt.diy:五分钟免费搭建个人博客,开启你的数字创作之旅!(保姆级教程)
Bolt.diy 是 Bolt.new 的一个开源版本,它提供了更高的灵活性和可定制性。通过自然语言交互,它能够简化开发流程,并提供全栈开发支持,同时允许用户进行二次开发。它就像是你的数字创作伙伴,帮你把想法变成现实。在数字化时代,拥有一个个人博客不仅是一种展示自我的方式,更是一种记录生活、分享知识、连接世界的桥梁。通过阿里云的 Bolt.diy,我仅用五分钟就搭建了一个功能齐全、美观大方的个人博客,这让我深刻感受到了技术的力量和便捷性。
508 29
|
8月前
|
人工智能 搜索推荐 数据可视化
Manus:或将成为AI Agent领域的标杆
随着人工智能技术的飞速发展,AI Agent(智能体)作为人工智能领域的重要分支,正逐渐从概念走向现实,并在各行各业展现出巨大的应用潜力。在众多AI Agent产品中,Manus以其独特的技术优势和市场表现,有望成为该领域的标杆。作为资深AI工程师,本文将深入探讨Manus的背景知识、主要业务场景、底层原理、功能的优缺点,并尝试使用Java搭建一个属于自己的Manus助手,以期为AI Agent技术的发展和应用提供参考。
12921 19
|
10月前
|
消息中间件 人工智能 运维
1月更文特别场——寻找用云高手,分享云&AI实践
我们寻找你,用云高手,欢迎分享你的真知灼见!
3168 68
1月更文特别场——寻找用云高手,分享云&AI实践
下一篇
oss云网关配置