刚开始听说 ChatGPT 能写代码的时候,说实话我是抱有怀疑态度的。毕竟平时遇到坑,连 StackOverflow 都不一定能马上解决,一个 AI 真的能懂业务逻辑吗?
但实际用了一段时间后,感觉还行,确实改变了我平时写代码的一些习惯。这里简单记录下最近的一些使用感受。
平时主要拿它做什么
试了一圈下来,发现它在下面几个场景里还挺顺的:
1. 撸基础代码
平时写些重复性比较高的代码,可以直接让它生成一个底座。比如要写个接口:
我会这样问:
用 Node.js + Express 写个文件上传,用 multer,限制 5MB,只能传图片,传完返回 URL。
它给出的代码基本上能覆盖大概 80% 的逻辑。剩下那 20% 肯定还得自己改,比如业务报错处理、具体的鉴权校验什么的。但总归比从零开始敲要省事。
2. 看不懂别人的代码时
接手老项目或者看开源库源码,遇到那种绕来绕去的逻辑,直接把代码贴进去让它解释,体验还不错。
帮我看看这段防抖代码具体是怎么运作的:
1
2
3
4
5
6
7
8
9
10
11
12
13 function debounce(fn, delay, immediate) {
let timer = null
return function(...args) {
if (timer) clearTimeout(timer)
if (immediate && !timer) {
fn.apply(this, args)
}
timer = setTimeout(() => {
if (!immediate) fn.apply(this, args)
timer = null
}, delay)
}
}这比去搜索引擎翻博客找答案快多了。
3. 查报错
遇到控制台标红,把报错信息连带相关代码扔进去:
这个 Vue 组件切路由报错 “Cannot read property ‘map’ of undefined”,帮我看下问题在哪:
[贴上代码]
大部分时候它能很快指出问题(比如数据还没加载完就渲染了),并给出修改建议。
4. 写正则
这个算是最爽的点。正则这东西过段时间不写就容易忘,现在直接提需求:
写个正则匹配手机号:1 开头,第二位是 3-9,总共 11 位。
1 | const phoneRegex = /(?<!\d)1[3-9]\d{9}(?!\d)/g |
直接拿来测一下没问题就能用,挺省心的。
5. 简单探讨下方案
在动手写之前,可以让它给点思路。比如要做个权限管理,我会问:
要做一个简单的电商后台权限系统,菜单和按钮级都要控制,前端用 Vue 3,给点前后端的设计建议。
它给的方案往往比较中规中矩,但作为起步参考是够了。
一些小经验
用多了发现,你提问的方式很大程度上决定了它给出的结果。
别问得太宽泛
1 | ❌ 这样问不太行: |
多聊几轮
很少有一次就能生成完美代码的情况。一般都是先让它搭个架子,然后接着说“加上类型定义”、“补充下错误处理”,慢慢调整到能用的状态。
感觉比较明显的局限性
当然,这东西肯定不是完美的,用下来也踩了不少坑:
- 会一本正经地胡说八道(幻觉):有时候它会捏造一些根本不存在的 API。看着特别合理,一跑就报错,所以它给的偏门方法还是得查查文档确认下。
- 时效性问题:稍微新一点的框架版本(比如某些新出的语法糖),它可能根本不知道,还会用老一套的写法教你。
- 理解不了整个项目:它只能看懂你贴给它的那几行代码。涉及到复杂业务流转或者全局架构调整,它就帮不上什么忙了。
- 安全问题:公司核心的业务代码肯定是不能随便往里贴的。
简单总结
总的来说,AI 辅助编程改变了一些工作习惯。以前可能要花很多时间去查 API 怎么拼写、查某个配置怎么配,现在这些脏活累活可以让它代劳,自己可以把更多心思放在业务逻辑和代码审查上。
工具确实能提高点效率,但最终判断代码质量、能不能上生产环境的,还是咱们自己。感兴趣的可以搜一下自己顺手的工具试一试。
评论加载中…