如何使用基于GPT-4的Cursor编辑器提升开发效率
程序员最恨两件事情:一是别人代码不写文档,二是要让自己写文档。随着 GPT-4 的到来这些都不是问题了,顺带可能连程序员都解决了。。。
之前一直觉得 AI 生成的代码也就写个面试题的水平,小打小闹,现在时代可变了。Cursor 编辑器是 GPT-4 驱动,对接了 GitHub 的 Copilot。本文列举了几个他能完全掌控的场景,就看你慌不慌
文章目录
- 一、代码审查
- 二、补充文档
- 三、补充单测
- 四、补充定义
- 五、生成通用代码
- 六、总结
官网: https://www.cursor.so/

一、代码审查
他能看懂你的代码,并能指出错误!!!也就是说他的编程水平是高于你的!毕竟基于 GitHub 的海量代码训练出来的,Code Review 从此有了个好老师
- 源码:我们从网上找了个常见的金额处理函数,并删掉一些边界条件看看能不能发现问题
const formatMoney = (money, symbol = "", decimals = 2) => {let arr = money.toFixed(decimals).toString().split(".");let first = parseInt(arr[0]).toLocaleString();let result = [first, arr[1]].join(".");return `${symbol} ${money.toFixed(decimals)}`;
};formatMoney(12341234.246); // 12,341,234.25
formatMoney(12341234.246, "¥", 1); // ¥ 12,341,234.2
- 输入指令:分析 formatMoney 函数的入参风险,中文回答
- 效果:询问被修改的函数风险能准确回答,并给出改进方法
- 输入指令:分析这个文件并给出优化建议
- 效果:能清晰的识别 3 个函数的作用,并能给出建议
二、补充文档
程序员最恨两件事情:一是别人代码不写文档,二是要让自己写文档。现在这都不是问题了,在不写一行中文注释的情况下,生成完整的文档不在话下
- 输入指令:补充这个文件的中文markdown,包含使用说明、场景说明、注意事项、代码示范等
- 效果:markdown 渲染效果如下
三、补充单测
- 输入指令:给上面函数补充完整的单元测试,考虑各种边界条件
- 效果:瞬间生成单测,并能覆盖各种边界和极端情况,极大的提高代码质量
test("formatMoney should format money correctly", () => {expect(formatMoney(12341234.246)).toBe(" 12341234.25");expect(formatMoney(12341234.246, "¥", 1)).toBe("¥ 12341234.2");expect(formatMoney(0)).toBe(" 0.00");expect(formatMoney(0.1)).toBe(" 0.10");expect(formatMoney(0.005)).toBe(" 0.01");expect(formatMoney(9999999999.999)).toBe(" 9999999999.99");
});test("fenToYuan should convert fen to yuan correctly", () => {expect(fenToYuan(123456)).toBe("1234.56");expect(fenToYuan(0)).toBe("0.00");expect(fenToYuan("123456")).toBe("1234.56");expect(fenToYuan("0")).toBe("0.00");
});test("yuanToFen should convert yuan to fen correctly", () => {expect(yuanToFen(12.34)).toBe("1234");expect(yuanToFen(0)).toBe("0");expect(yuanToFen("12.34")).toBe("1234");expect(yuanToFen("0")).toBe("0");
});
test("formatMoney should handle negative numbers correctly", () => {expect(formatMoney(-1234.5678)).toBe("- 1234.57");expect(formatMoney(-1234.5678, "¥", 1)).toBe("-¥ 1234.6");expect(formatMoney(-0.1)).toBe("- 0.10");expect(formatMoney(-0.005)).toBe("- 0.01");expect(formatMoney(-9999999999.999)).toBe("- 9999999999.99");
});test("fenToYuan should handle negative numbers correctly", () => {expect(fenToYuan(-123456)).toBe("-1234.56");expect(fenToYuan("-123456")).toBe("-1234.56");
});test("yuanToFen should handle negative numbers correctly", () => {expect(yuanToFen(-12.34)).toBe("-1234");expect(yuanToFen("-12.34")).toBe("-1234");
});
四、补充定义
- 指令:补充formatMoney函数的interface
- 效果:可快速生成 interface
五、生成通用代码
- 目标:我们提前定义一个树状的菜单结构
tree
,然后让 AI 根据字段和属性自动生成可投产面包屑组件 - 指令:生成一个面包屑组件,入参是tree和当前路由
- 效果:可迅速生成高质量可运行的面包屑组件,自动分析 tree 的数据格式,并生成递归查找路径的函数
const tree = [{name: '首页',route: '/',},{name: '个人中心',route: '/home',children: [{name: '我的订单',route: '/order',children: [{name: '未收货',route: '/undo',},{name: '已收货',route: '/done',}]},{name: '我的地址',route: '/address',children: [{name: '首页',route: '/',}]}]}
]
const Breadcrumb = ({ tree, currentRoute }) => {const breadcrumbList = [];const findRoute = (tree, currentRoute) => {for (let i = 0; i < tree.length; i++) {const node = tree[i];if (node.route === currentRoute) {breadcrumbList.push(node.name);return true;} else if (node.children) {if (findRoute(node.children, currentRoute)) {breadcrumbList.push(node.name);return true;}}}return false;};findRoute(tree, currentRoute);return (<div>{breadcrumbList.reverse().map((item, index) => (<span key={index}>{item}{index !== breadcrumbList.length - 1 && ' > '}</span>))}</div>);
};<Breadcrumb tree={tree} currentRoute={'/home/order/undo'} />
六、总结
-
最后来一段视频完整的回顾一下效果
使用基于GPT-4的Cursor编辑器自动生成代码
-
本文给出的例子其实都比较简单,真正打开生产环境的复杂业务逻辑代码照样都能分析的头头是道,这里主要是红线问题不能使用业务代码作为示范。
-
现阶段看起辅助作用是完全没问题的,真正实现了人机结对编程,目测已经可以取代 30% 左右的重复低水平劳动。这还是在没有完整阅读业务仓库代码和 PRD 的基础上做到的,如果以公司粒度投喂更多的业务知识和已有代码,以及后面的技术升级,那能干的活的比例肯定是越来越高的。
-
AI 的奇点真的快来了,有生之年肯定是能看到这样的盛况了,是福是祸只能拥抱变化了吧!
相关文章:

如何使用基于GPT-4的Cursor编辑器提升开发效率
程序员最恨两件事情:一是别人代码不写文档,二是要让自己写文档。随着 GPT-4 的到来这些都不是问题了,顺带可能连程序员都解决了。。。 之前一直觉得 AI 生成的代码也就写个面试题的水平,小打小闹,现在时代可变了。Curs…...

压箱底教程分享,手把手教会你如何注册target账号和下单
喜欢套利的朋友肯定都认识target这个平台吧,它是美国热门的综合性海淘网站之一。东哥近日收到私信有朋友向我请教在注册target账号时遇到的一些问题,所以今天东哥想跟大家分享的就是就是target账号注册教程和下单流程,让也想注册target账号的…...

一次性搞懂dBSPL、dBm、dBu、dBV、dBFS的区别!
相信学习音乐制作的同学在混音阶段经常会碰到各种关于声音的单位,其中最具代表性的可能就是分贝家族的单位了,如dBSPL、dBm、dBu、dBV、dBFS等。 那么,这些单位分别表示什么,又有什么区别呢? 描述声音信号强弱的单位…...

漂亮实用的15个脑图模板,你知道哪些是AI做的吗?
对于很多第一次接触到思维导图的朋友,看到软件的时候往往找不到方向,不知道如何创作? 今天大家的好助手来了。 一是有大量的思维导图模板,大家看着模板做,慢慢就会做了。 二是ProcessOn 思维导图已经可以用AI 做思维…...
历代程序员都无法逃脱的诅咒 -- 低代码
1764年5月4日星期四 愤怒的纺织工人 纵火烧毁了哈格里夫斯的家 因为他发明的珍妮纺织机 让很多当地的手工纺织工人失业了 这也被认为是第一次工业革命的开端 由于事发的星期四 所以这一事件也被称作疯狂星期四 类似的变革 也一次次的出现在软件行业 他是历代程序员都无法逃脱的…...

14Exceptional Control Flow Exceptions and Process(异常控制流,异常和进程)
异常控制流 异常控制流出现的地方: 异常控制流(Exceptional Control Flow,ECF)是程序执行过程中由于某些特殊事件或条件而导致的控制流的改变。异常控制流通常出现在以下几种情况: 硬件异常和中断:硬件异…...
LeetCode - 两数之和
题目信息 源地址:两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不…...

Python 小型项目大全 31~35
三十一、猜数字 原文:http://inventwithpython.com/bigbookpython/project31.html 猜数字是初学者练习基本编程技术的经典游戏。在这个游戏中,电脑会想到一个介于 1 到 100 之间的随机数。玩家有 10 次机会猜出数字。每次猜中后,电脑会告诉玩…...

他又赚了一万美金
有一些学员真的挺能干的,收了一万刀,感到欣慰,毕竟在国外lead这条路,有很多人被骗,也有很多人赚钱。 但是大部分人跟着某一些所谓的大佬,最后自己却不动手操作。 从一开始怕跟我学习,到最后选…...
企业工程项目管理系统+spring cloud 系统管理+java 系统设置+二次开发
工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…...

教你使用Apache搭建Http
Apache2默认采用的是80端口号,因此直接通过公网ip或域名就能访问。现实中,很多服务器本身就部署了许多其它服务,80端口号往往被占用,因此就需要将Apache2改成其它访问端口。 修改端口,首先需要修改/etc/apache2/ports…...

ZooKeeper+Kafka+ELK+Filebeat集群搭建实现大批量日志收集和展示
文章目录一、集群环境准备二、搭建 ZooKeeper 集群和配置三、搭建 Kafka 集群对接zk四、搭建 ES 集群和配置五、部署 Logstash 消费 Kafka数据写入至ES六、部署 Filebeat 收集日志七、安装 Kibana 展示日志信息一、集群环境准备 1.1 因为资源原因这里我就暂时先一台机器部署多…...

数据结构初阶 - 总结
-0- 数据结构前言 什么是数据结构 什么是算法 数据结构和算法的重要性-1- 时间复杂度和空间复杂度 👉数据结构 -1- 时间复杂度和空间复杂度 | C 算法效率 时间复杂度大O的渐进表示法eg 空间复杂度 常见复杂度对比OJ 消失的数组 轮转数组-2- 顺序表 与 链表 &am…...
代码随想录算法训练营第四十四天-动态规划6|518. 零钱兑换 II ,377. 组合总和 Ⅳ (遍历顺序决定是排列还是组合)
如果求组合数就是外层for循环遍历物品,内层for遍历背包。 如果求排列数就是外层for遍历背包,内层for循环遍历物品。 求物品可以重复使用时,最好是用一维数组,会比较方便。二维数组不想思考了,二维还是用在01背吧吧。…...

wma格式怎么转换mp3,4种方法超快学
其实我们在任何电子设备上所获取的音频文件都具有自己的格式,每种格式又对应着自己的属性特点。比如wma就是一种音质优于MP3的音频格式,虽然很多小伙伴比较青睐于wma所具有的音质效果,但也不得不去考虑因wma自身兼容性而引起很多播放器不能支…...

【数据结构与算法】判定给定的字符向量是否为回文算法
题目: Qestion: 试写一个算法判定给定的字符向量是否为回文。 回文解释: 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。 主要思路: 因为数据要求不是很严格并且是一个比较简单的…...

考研数二第十七讲 反常积分与反常积分之欧拉-泊松(Euler-Poisson)积分
反常积分 反常积分又叫广义积分,是对普通定积分的推广,指含有无穷上限/下限,或者被积函数含有瑕点的积分,前者称为无穷限广义积分,后者称为瑕积分(又称无界函数的反常积分)。 含有无穷上限/下…...

【论文总结】理解和减轻IoT消息协议的安全风险
理解和减轻IoT消息协议的安全风险介绍概述前置知识威胁模型MQTT IoT通信安全分析未授权的MQTT消息未授权的Will消息未经授权的保留消息MQTT会话管理故障未更新的会话订阅状态未更新的会话生命周期状态未经身份验证的 MQTT 身份客户端id劫持MQTT Topics的授权MQTT Topic不安全的…...
SpringBoot基础入门
一、概述 Spring Boot是一个开源的Java框架,它是基于Spring框架的基础之上创建的。Spring Boot可以帮助开发人员更快地创建Spring应用程序,并以最小的配置要求来运行它们。Spring Boot可以用于构建各种类型的应用程序,包括Web应用程序、RESTful API、批处理作业、消息传递应…...
jar 包与 war 包区别
1、war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块;jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的。 2、war包是做好一个web应用后,通常是网站,打成包部署…...

C++之动态数组vector
Vector 一、什么是 std::vector?二、std::vector 的基本特性(一)动态扩展(二)随机访问(三)内存管理 三、std::vector 的基本操作(一)定义和初始化(二…...
软考 系统架构设计师系列知识点之杂项集萃(84)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(83) 第151题 在软件系统工具中,版本控制工具属于(),软件评价工具属于()。 第1空 A. 软件开发工具 B. 软件维…...

防爆型断链保护器的应用场景有哪些?
防爆型断链保护器是一种用于防止链条断裂导致设备损坏或安全事故的装置,尤其适用于存在爆炸风险的工业环境。以下是其主要应用场景: 1.石油化工行业 在石油化工厂、炼油厂等场所,防爆型断链保护器可用于保护输送设备…...

Visual Studio问题记录
程序"xxx dotnet.exe"已退出,返回值为-2147450730 问deepseek:visual studio输出程序dotnet.exe已退出,返回值为-2147450730 dotnet.exe 编译时退出并返回错误代码 **-2147450730**(十六进制 0x80008076)&…...

React 第五十六节 Router 中useSubmit的使用详解及注意事项
前言 useSubmit 是 React Router v6.4 引入的强大钩子,用于以编程方式提交表单数据。 它提供了对表单提交过程的精细控制,特别适合需要自定义提交行为或非标准表单场景的应用。 一、useSubmit 核心用途 编程式表单提交:不依赖 <form>…...
第八部分:第五节 - 生命周期与副作用 (`useEffect` Hook):组件的幕后工作
知识点: 组件生命周期(挂载 Mounting, 更新 Updating, 卸载 Unmounting - 高级概念),副作用 (Side Effects),useEffect Hook (用于处理副作用,如数据获取、订阅、DOM 操作),useEffect 的依赖数组…...

打造高效多模态RAG系统:原理与评测方法详解
引言 随着信息检索与生成式AI的深度融合,检索增强生成(RAG, Retrieval-Augmented Generation) 已成为AI领域的重要技术方向。传统RAG系统主要依赖文本数据,但真实世界中的信息往往包含图像、表格等多模态内容。多模态RAG…...

兰亭妙微 | 医疗软件的界面设计能有多专业?
从医疗影像系统到手术机器人控制界面,从便携式病原体检测设备到多平台协同操作系统,兰亭妙微为众多医疗设备研发企业,打造了兼具专业性与可用性的交互界面方案。 我们不仅做设计,更深入理解医疗场景的实际需求: 对精…...
openvino如何在c++中调用pytorch训练的模型
步骤1:将PyTorch模型转换为ONNX格式 转换代码示例(Python) import torch import torchvision1. 加载训练好的PyTorch模型 model torchvision.models.resnet18(pretrainedTrue) model.eval() # 设置为评估模式2. 创建虚拟输入(…...

ASP.NET Core 中间件深度解析:构建灵活高效的请求处理管道
在现代Web应用开发中,请求处理管道的设计和实现至关重要。ASP.NET Core通过其中间件(Middleware)系统提供了一种高度灵活、可扩展的方式来构建请求处理管道。本文将全面深入地探讨ASP.NET Core中间件的概念、工作原理、实现方式以及最佳实践,帮助开发者掌…...