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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 豆包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能带来更多创新功能,持续为编程开发领域注入新的活力。

相关文章
|
14小时前
|
人工智能 安全 5G
亚冬会绽放“云端”,联通云如何点亮冰城“科技之光”?
亚冬会绽放“云端”,联通云如何点亮冰城“科技之光”?
|
12小时前
|
人工智能 自然语言处理 搜索推荐
飞算 JavaAI:开发界的 “AI 教练”,助你飞速成长!
飞算JavaAI如同开发者的“AI教练”,通过深度洞察需求、精准绘制开发蓝图,以自然语言解析需求,自动生成接口和表结构,简化业务理解。其全方位开发指导功能,细致设计每个细节,帮助开发者梳理业务规则与数据流程,提高开发效率。全程智能辅助则自动输出完整工程源码,涵盖配置类文件、Java代码及测试资源,让开发者专注于优化业务逻辑和实现个性化功能。无论是新手还是资深开发者,飞算JavaAI都是不可或缺的得力伙伴,助力快速成长与技术突破。
|
14小时前
|
存储 监控 调度
应对IDC资源紧缺:ACK Edge如何解决LLM推理服务的弹性挑战
基于ACK Edge的混合云LLM弹性推理解决方案,通过动态调整云上和云下的GPU资源使用,来应对推理服务的潮汐流量需求,提高资源利用效率,降低运营成本,并确保服务稳定性和高可用性。
|
15小时前
|
人工智能 语音技术 开发者
千问max#百炼AI实训课作业#科幻小说家
根据教程一步步操作确实有趣,尤其是语音识别的准确度很高,带来了很好的开发体验。通过详细步骤引导,开发者可以轻松上手并实现高质量的语音交互功能。
|
14小时前
|
存储 SQL 关系型数据库
服务器数据恢复—云服务器上mysql数据库数据恢复案例
某ECS网站服务器,linux操作系统+mysql数据库。mysql数据库采用innodb作为默认存储引擎。 在执行数据库版本更新测试时,操作人员误误将在本来应该在测试库执行的sql脚本在生产库上执行,导致生产库上部分表被truncate,还有部分表中少量数据被delete。
31 19
|
17小时前
|
人工智能 自然语言处理 JavaScript
宜搭上线 DeepSeek Chat 页面模板,一键启用 DS 对话
当低代码平台与 AI 技术相遇,二者的融合为企业带来了更多的创新空间和发展机遇。这种融合不仅能够进一步简化开发流程,还能为应用赋予更强大的智能化能力。在这样的背景下,宜搭低代码平台陆续上线了 DeepSeek 插件、DeepSeek 连接器等工具,今天,更是推出了「DeepSeek Chat」页面模板,方便大家一键启用 DS 对话能力。
120 5
|
15小时前
|
分布式计算 并行计算 调度
基于HPC场景的集群任务调度系统LSF/SGE/Slurm/PBS
在HPC场景中,集群任务调度系统是资源管理和作业调度的核心工具。LSF、SGE、Slurm和PBS是主流调度系统。LSF适合大规模企业级集群,提供高可靠性和混合云支持;SGE为经典开源系统,适用于中小规模集群;Slurm成为HPC领域事实标准,支持多架构和容器化;PBS兼具商业和开源版本,擅长拓扑感知调度。选型建议:超大规模科研用Slurm,企业生产环境用LSF/PBS Pro,混合云需求选LSF/PBS Pro,传统小型集群用SGE/Slurm。当前趋势显示Slurm在TOP500系统中占比超60%,而商业系统在金融、制造等领域保持优势。
38 26
|
11天前
|
机器学习/深度学习 存储 Python
深入剖析SVM核心机制:铰链损失函数的原理与代码实现
铰链损失(Hinge Loss)是支持向量机(SVM)中核心的损失函数,广泛应用于机器学习模型训练。其数学形式为 \( L(y, f(x)) = \max(0, 1 - y \cdot f(x)) \),其中 \( y \) 是真实标签,\( f(x) \) 是预测输出。铰链损失具有凸性、非光滑性和稀疏性等特性,能够最大化分类边际并产生稀疏的支持向量,提高模型泛化能力。它在正确分类、边际内分类和错误分类三种情况下有不同的损失值,适用于线性可分问题且对异常值不敏感。铰链损失通过严格的边际要求和连续梯度信息,提供了高效的优化目标,适合构建鲁棒的分类模型。
142 77
深入剖析SVM核心机制:铰链损失函数的原理与代码实现
|
5月前
|
人工智能
|
1天前
|
机器学习/深度学习 PyTorch TensorFlow
DGL(0.8.x) 技术点分析
DGL是由Amazon发布的图神经网络开源库,支持TensorFlow、PyTorch和MXNet。DGL采用消息传递范式进行图计算,包括边上计算、消息函数、点上计算、聚合与更新函数等。其架构分为顶层业务抽象、Backend多后端适配、Platform高效计算适配以及C++性能敏感功能层,确保高效、灵活的图神经网络开发。