找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 135|回复: 0

AI 3秒生成的代码,你要用3小时维护?谈谈如何在AI编程中避坑

[复制链接]
发表于 2025-10-9 20:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

×
作者:微信文章
w1.jpg
一个月没有更新文章,这一个月大部分时间在跟AI斗智斗勇,并上瘾。经常用AI写代码的朋友一定知道,AI写代码的速度很快,根据你的需求,几秒钟就可以实现一个原型,但快即是慢,如果不加以干预,任由其发挥,随着功能的迭代,复杂性滚雪球般激增,你将很快感受到问题。比如,你让AI写段代码来调用云平台上的大模型,它偶尔会把API key,Access Key这些硬编码在程序里,并且以迅雷不及掩耳盗铃的速度提交到Github,敏感信息就这样暴露了。或者,它在测试过程中把你本机的IP地址写死在程序里,换一台电脑就跑不起来了。再比如,你让AI实现了一个基于HTTPS的网站,前端页面和后端服务也通过HTTPS来交互,AI很快帮你实现,并帮你生成了安全证书,测试很快就成功。但是有一次前端进程不知道怎么没有正常运行,AI尝试重启服务的时候由于端口被占用,自然就起不起来。这时候正常人会怎么做?对,去找到原因并解决问题。AI做了什么?它迅速把你的HTTPS改成了HTTP,换了一个端口启动服务,问题“解决”。但这自然也不是你想要的,而且这样的情况经常发生,几乎每一次服务启动发现问题的时候AI都会“勤快的”重新写个HTTP服务来代替原有的HTTPS。还有个案例,有一次我让AI写一个程序,从用户聊天记录文件获取信息并加以整理,并输出成可读性比较高的HTML文件。AI写了一个巨大的程序,包含了从CSV文件读取、转换、获取LLM密钥、结果处理、HTML生成等步骤。如果是完全外行,可能会觉得效率挺高。但这种做法违反了软件工程的单一职责原则,这个上帝对象包含了太多的功能,使得代码难以阅读、测试、和维护。这时候我问它:如果读取的文件格式有多种、具体使用哪家的LLM模型用户希望自己选择、结果也希望以多种格式来输出,你会怎么做?它醒悟了,开始重构代码,把以上几个功能封装成了独立的程序,并根据重构内容记录在了Markdown文件里,作为后续的参考。为什么AI助手有这些问题?个人粗浅的理解是它的首要目标是尽快满足功能需求,尽快解决问题,而它基于概率的处理问题的方法本质上是在猜答案,这样经常就离项目的初衷相距甚远,更不用说去主动遵循安全、可维护性、架构等规范性的东西了。当然,随着AI编程助手的发展,每一次版本迭代都会有惊喜,现在的很多工具会在项目初期跟你建议说怎么样做是领先实践,跟他的对话也会使你学到东西。但这不意味着你可以放手让它自由发挥,在AI时代,优秀的程序员的价值在于架构设计和项目管理。那么,如果你自认为自己像我一样,不是最好的程序员的时候,应该怎么样跟AI合作?以下是一些小贴士:设计优先,架构优先。在项目启动阶段,不急着让AI开始程序开发,而是把需求清晰的给到它,让它生成分阶段的项目计划,每个阶段实现什么功能都写出来。可以不是最终的版本,但一定要有,并且在项目实际开发过程中不断去迭代。项目计划作为主文档,里面涉及到的技术栈,例如模型的连接、云平台的配置、数据库选型等,都分析一遍形成文档,给你看,也给它自己看。明确且有约束的提示:不要只说做什么,还要说怎么做,以及做到什么程度。相比于直接让它把用户信息处理模块重构一下,你应该让它引用一个具体的程序,让它自己分析这段代码是否符合单一职责原则,如果不是,里面有哪些逻辑可以分解成3-4个独立的方法的,相互之间传递数据的参数应该是怎么样的,确保重构以后代码之间重复的内容降低到5%以下。这样AI会考试思考架构,产出的代码结构更清晰,可维护程度更高。每一次编辑都经过你的同意:尽量不打开全自动编辑模式,每一次修改代码都让你看到具体修改的内容,扫一眼明显不符合规范(例如写死密码、地址,同一个程序处理一大堆内容等),直接点取消强迫它重新思考。这样它会把这个任务分解成一些子任务来实现,可靠性就更高了。别指望它有记忆,下一次你不提醒它还是会犯同样的错误。必须保证测试和验证:每一个小的功能写完,都要求它做单元测试,有条件的需要把涉及到的上下游功能都测试一遍,确保改了新的程序不会影响其他的已经测试通过的部分。每一个成功的版本,记得提交到代码库,这个代码库最好不在你的本机,可以是你家的NAS,也可以是Github,如果是公司的程序当然就提交到公司内部的Git上。这样当AI犯了一些比较严重的错误,以至于你的程序回退到上一个版本的难度很大的时候,你可以直接从代码库把代码下下来,减少损失。说到这里,你可能会问,我不是那么专业,但是仍然想让AI可靠的帮我写程序,怎么办?很正常,你我都没办法一上来就给出专业的提示词,但你可以学习。在跟AI交互的过程中保持一颗好奇心,在让它给出代码的同时,给出解释(最好把这些解释都保存成说明文档),使得每一次协作都成为一个学习机会。逐渐你的能力得到了提升,跟它的交互也变得越来越高效。今年流行的“氛围编程(Vibe Coding)”我认为不是一个好词,正确的做法是AI辅助工程(AI-Assisted Engineering),AI在软件开发生命周期的每一个阶段都在辅助你,而你,是主角。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

Archiver|手机版|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+2, 2025-10-10 07:52 , Processed in 0.106438 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表