在当前 AI 辅助编程(如使用 Cursor、GitHub Copilot、Claude Code 等工具)成为常态的背景下,开发者在享受高效率的同时,也面临着一系列由 AI 带来的独特问题。
以下为您汇总的 AI 编程常见问题(FAQ),分为代码质量与安全、提示词与工程落地、认知与习惯三个维度:
一、 代码质量与“隐形缺陷”问题
AI 生成的代码看起来往往逻辑通顺,但极易在极端或高并发场景下暴雷。
1. 为什么 AI 写的代码在高并发下经常崩溃?
-
原因:AI 的训练语料多为功能实现的标准范例(Happy Path),天生缺乏“防御性编程”意识。
-
典型遗漏:
-
幂等性缺失:接口直接进行插入或更新,未考虑网络超时重试导致的重复数据。
-
并发竞态:缺乏分布式锁、Redis 锁或 CAS 机制,导致库存超卖或数据覆盖。
-
连接池泄漏:生成的数据库或 HTTP 请求未在
finally块中及时释放。
-
2. AI 代码常见的安全漏洞有哪些?
AI 并不天然具备安全审查能力,直接复制其代码容易引入以下漏洞:
-
SQL 注入:偶尔仍会写出字符串拼接而非参数化查询的代码。
-
越权风险:能完美写出业务逻辑,但经常漏掉接口级/方法级的权限校验。
-
敏感信息泄露:在
Logger中直接打印包含明文密码、Token 或密钥的实体类。
3. 如何解决 AI 的“幻觉”(生成不存在的库或 API)?
-
现象:AI 会言之凿凿地推荐一个看似完美的函数或第三方依赖,但实际上根本不存在。
-
对策:
-
限制 AI 的上下文:在 Prompt 中明确指定“仅使用
xxx库的v1.2版本 API”。 -
利用现代 AI IDE(如 Cursor)的 @Web 功能,让 AI 实时检索官方最新文档,避免基于老旧数据的盲猜。
-
二、 提示词与工程落地问题
1. 为什么项目稍微变大,AI 就开始“胡言乱语”或前后矛盾?
-
原因:上下文窗口(Context Window)限制与注意力漂移。当把整个项目的代码都塞给 AI,或者对话轮次过多时,AI 会遗忘最初的架构设定。
-
解决办法:
-
模块化拆分:不要让 AI “写一个电商系统”,而是“编写一个符合仓库模式(Repository Pattern)的订单支付状态更新函数”。
-
使用
.cursorrules或全局配置文件:在项目根目录下定义好技术栈、代码风格、命名规范,让 AI 每次生成前强制阅读。
-
2. AI 总是给完整代码,导致文件覆盖冲突怎么办?
-
对策:在提问时加入格式约束。
提示词模板:
“请分析以下修改需求。不要给出完整的代码文件,仅以 Diff 格式(+ / -)或‘修改具体函数’的形式提供你需要变更的代码段。”
3. 如何让 AI 更好地理解整个现有项目的架构?
-
单靠复制粘贴是不行的。应当善用现代 AI 工具的索引功能(如 Composer 模式、Claude Code 的 codebase 扫描)。它会在后台对你的项目建立抽象语法树(AST)向量索引,从而理解类与类之间的调用关系。
三、 开发者认知与习惯问题(AI 时代的程序员修养)
1. 引入 AI 编程后,程序员的核心竞争力变成了什么?
-
以前:熟练记忆 API、快速写出样板代码、精通某种特定语法。
-
现在:架构设计能力、业务理解能力、代码审查(Code Review)能力与 Debug 逻辑。
-
金句:AI 让写代码的门槛变低了,但让“把系统做稳定”的门槛变高了。程序员正在从“打字员”转变为“审查员(Reviewer)”和“系统架构师”。
2. 如何避免患上 “AI 依赖症”(代码空心化)?
-
现象:离了 AI 连简单的循环或条件判断都不会写,遇到 Bug 只会不断盲目地对 AI 说“这段报错了,再改一遍”,陷入死循环。
-
建议:
-
“先思考,后提问”:在让 AI 写代码前,自己先在脑子里或草稿纸上理清控制流和状态机逻辑。
-
每行必懂:绝不盲目合入(Merge)任何一段自己看不懂的 AI 代码。如果不懂,让 AI 解释这行代码为什么要这样写。
-
💡 总结:高效使用 AI 编程的黄金法则
-
把 AI 当成带薪实习生:它干活极快、知识面极广,但粗心大意、缺乏经验,需要你这个“资深架构师”随时把关、Codereview。
-
明确边界,严防死守:核心事务边界、分布式锁、权限校验这三板斧,必须由人类开发者亲自设计并严格测试。
1万+

被折叠的 条评论
为什么被折叠?



