最近在用Cursor和Copilot写一个内部管理系统,刚开始觉得效率确实高,但项目跑了两周后发现问题了。AI生成的函数经常把业务逻辑和工具函数混在一起,变量命名也很随意,比如 tempData、handleStuff 这种。最头疼的是,它很喜欢在同一个文件里堆一堆不同职责的代码,我每次都得手动拆。我试过在prompt里强调“遵循SOLID原则”、“写清晰注释”,但感觉它只在前几行有效,后面又“放飞自我”了。想问问大家,是我prompt写得太抽象不够具体,还是这类工具本质上就不适合用来生成复杂业务代码?有没有什么技巧能让它生成的结构更接近我自己手写的习惯?
AI编程助手写出的代码越来越难维护,是我的用法有问题吗?
全部回复
共 48 条我也遇到过类似的情况,感觉AI写小函数还行,一旦涉及多模块协作就开始乱来了。后来我发现与其在prompt里讲抽象原则,不如直接给它看我手写的两三个示例文件,让它照着风格来,效果会好很多。另外项目里最好维护一份.clinerules或.cursorrules之类的规则文件,把命名规范和分层约定写死,每次对话它都会带上。复杂业务逻辑建议还是自己搭骨架,只让AI填具体实现,反过来真的容易失控。
我也遇到过类似情况,感觉AI写小函数还行,一牵扯多模块协作就容易乱。后来我换了种做法,不让它直接写完整功能,而是先让它生成接口和目录结构,确认没问题再逐块填实现。另外每写完一个文件就让它自己review一遍,把混在一起的逻辑拆出来,比事后手动改省事多了。
你让AI一口气写整个模块肯定放飞,试试按函数粒度生成,再让它模仿你已有代码的风格。
AI写业务代码就这样,别指望它自己分文件,我都是先让它写小函数再手动拼。
我也有类似感受,AI写小函数挺利索,但一碰到跨文件、多模块的业务逻辑就开始糊弄,prompt里写原则基本只管前几轮对话。后来我改成让它先出接口和目录结构,确认完再一个文件一个文件地填,效果好很多,至少不会到处乱塞。命名这块可以丢给它一个你项目里已有的文件当范例,说“照这个风格来”,比抽象讲SOLID管用。
这个思路不错,收藏了。
你这情况太典型了,我前阵子也踩过一样的坑。后来发现光靠prompt讲原则基本没用,得在项目里放一份具体的代码风格示例文件,让它参考着写,效果会好很多。另外别指望它一次生成整个模块,我都是一段一段来,写完一个函数就review一下顺手拆好,不然后面积累起来真的改不动。至于复杂业务逻辑,感觉还是得自己搭骨架,AI填填CRUD和工具函数比较靠谱。
我也遇到过,后来改成让它一次只生成一个函数,别整个文件甩给它,效果好很多。