现在大家都用 AI 来写代码,像 Claude Code 这种工具确实能大幅提升效率,甚至能直接在终端里跑命令、修 Bug。但用久了你会发现一个很烦人的问题:为了“跑得更快”,AI 有时候会偷懒,给你一些看似能用但逻辑简陋、甚至像是“缝合”出来的代码。

明明需要高内聚低耦合的架构,它给你写几百行的过程式代码;明明需要考虑异常处理,它只写个 try-catch 装装样子。这种“糊弄学”让代码 review 变成了一场灾难,后期维护更是痛苦。

今天就来聊聊,怎么用几招“防偷懒”策略,逼着 AI 输出真正高质量的代码。

一、 拒绝“全能”指令,拆解任务颗粒度

很多时候,AI 偷懒是因为我们要的东西太“大”。如果你直接扔一句:“帮我写一个用户的注册登录模块,要有鉴权、邮件验证和限流。”

在这个宽泛的指令下,为了快速完成任务,AI 很可能会选择它能找到的最通用、最简单的模板,甚至把不同来源的代码片段拼在一起。它不会去深究你的具体业务场景,比如你的鉴权是 JWT还是 Session,邮件排队是用 Redis 还是 RabbitMQ。

解决方案:任务原子化

不要让 AI 一次性盖大楼,先让它搬砖。把需求拆解成最小的可执行单元。

  • 错误示范: “写一个爬虫抓取电商数据。”
  • 正确示范: “首先,写一个 Python 函数,用于解析特定 HTML 结构中的商品价格。只处理 DOM 选择器部分,不要包含请求逻辑,并处理价格文本中可能存在的货币符号和逗号。”

当你把任务拆得足够细,AI 就没法用“大而全”的模板来糊弄你,只能针对具体逻辑输出精确代码。

二、 强制约束:不仅要“怎么做”,更要“不能怎么做”

AI 的思维逻辑往往是补全式的,它倾向于生成概率最高的下一个 token。如果你不给“负面约束”,它就会走阻力最小的路——也就是那些最常见、最简单的写法。

解决方案:添加否定式提示词

在你的 Prompt 里明确列出禁止事项。这就像是给代码加了 Linter 规则。

  • 要求明确: “不要使用 requests 库,请使用 httpx 以支持异步请求。”
  • 架构约束: “不要把所有逻辑写在 Controller 里,请将业务逻辑分离到 Service 层,并使用 Dependency Injection 模式。”
  • 安全约束: “严禁拼接 SQL 字符串,必须使用参数化查询或 ORM。”

当你告诉它“不能怎么做”,它就没法偷懒用那些简单粗暴的老套路了。

三、 模拟 Code Review:让 AI 自我反省

AI 输出的代码往往是“一稿过”,没有经过深思熟虑。作为人类,我们会写第一版、重构第二版,但 AI 默认只给你第一版(也是最省力的版本)。

解决方案:多轮对话与自我批判

不要拿到代码就结束,继续追问。你可以利用 AI 的推理能力,让它自己“打自己的脸”。

  • Prompt 技巧: “这段代码可能存在哪些潜在的并发问题?请列出 3 个风险点并修复。”
  • Prompt 技巧: “请分析这段代码的时间复杂度。如果数据量增长到 100 万级,性能瓶颈在哪里?请给出优化方案。”

通过这种“找茬”式的提问,强迫 AI 从简单的“代码生成”模式切换到“软件工程”模式,它会为了回答你的问题而不得不重新审视逻辑,输出更严谨的代码。

四、 设定测试基准:用 Unit Test 验证逻辑

AI 写的代码有时候能跑,但是是“歪”的。或者它能处理正常的输入,一遇到边界情况就挂掉。这是因为 AI 在预测代码时,往往只关注 Happy Path(正常流程)。

解决方案:先写测试,再写代码(TDD)

你可以要求 AI 先生成单元测试,甚至是你先写好测试用例,让它填空。

  • 指令: “我需要实现一个金额计算函数。首先,请为我编写 5 个 Python 单元测试,包含正常数值、零值、负数、超长浮点数和 None 值的场景。测试通过后,再编写函数实现。”

有了测试用例作为“紧箍咒”,AI 就没法随便写个简易逻辑来糊弄,因为代码必须在所有边界条件下都跑通。这能极大地提高代码的健壮性。

五、 预设上下文与项目规范

AI 并不是真的“懂”你的项目,它每次生成都是基于当前上下文的概率推测。如果你的项目里有特定的代码风格、命名规范或工具链,而你没有告诉它,它就会按“大众编程习惯”来写,导致代码风格割裂,且容易引入不兼容的库。

解决方案:注入上下文

在使用 Claude Code 或类似工具前,先把项目的关键配置文件、编码规范文档甚至是一段写得很好的现有代码“喂”给它。

  • 操作: 将项目的 pylintrc.eslintrc 或者 README 中的开发规范部分贴给 AI。
  • 指令: “基于上述规范,重写之前的代码,确保变量命名符合驼峰法,并添加所有必要的 JSDoc 注释。”

总结

AI 是个强大的助手,但它也是个“能拖就拖”的员工。如果你想让它干出漂亮活,不仅要扮演好“产品经理”明确需求,还要扮演好“技术主管”制定规范,甚至要扮演好“测试工程师”死磕细节。

别让“快”成为牺牲代码质量的借口。用上这几招,把 AI 的算力逼到刀刃上,让它真正成为你的生产力杠杆,而不是制造新 Technical Debt 的机器。

标签: none

AI Skills Smart Station on Nick Launches

评论已关闭