当前位置: 首页 > news >正文

AI 编程的 30 条最佳实践

你好,我是冴羽。

在《超越 Vibe Coding —— AI 辅助编程指南》,我们介绍了 AI 编程的 4 大坑和提示词 5 大原则。

在《超越 Vibe Coding —— AI 辅助编程进阶指南》中,我们介绍了 AI 编程工具的 3 种模式、完整开发历程、高级 Prompt 技巧和上下文工程。

这篇文章没有废话,只有实践。

我把 AI 编程的所有核心技巧浓缩成 30 条最佳实践,每一条都是可以直接用的干货。

不讲理论,不讲原理,只告诉你:怎么做,才能让 AI 真正提升你的开发效率。

1. 规划阶段(6 条)

1.1. 永远先要计划,后写代码

❌ 错误:"帮我做一个 Todo 应用" ✅ 正确:"给我 3 个 Todo 应用的架构方案,从最简单到最完整。 先别写代码,只列出技术选型、数据结构、核心功能。 让我选一个方向后再开始实现。"

为什么:AI 十有八九会给你一个过度设计的方案,先看计划能避免返工。

1.2. 写一个 mini-PRD 或SPEC.md

在项目根目录创建SPEC.md,包含:

# 项目名称 ## 目标 用一句话说清楚要解决什么问题 ## 核心功能 - 功能 1:具体描述 - 功能 2:具体描述 - 功能 3:具体描述 ## 技术约束 - 使用 React 18 + TypeScript - 不使用任何 UI 框架 - 必须支持移动端 ## 验收标准 - [ ] 用户可以完成 XXX - [ ] 页面加载时间 < 2 秒 - [ ] 通过所有单元测试

为什么:有了 SPEC,AI 就有了明确的执行标准,不会跑偏。

1.3. 使用 Plan Mode

主流工具的规划模式:

为什么:规划模式强制 AI 先思考再动手,减少 90% 的返工。

1.4. 把大任务拆成小任务

❌ 错误:"实现用户认证系统" ✅ 正确: "第一步:设计用户表的数据库 schema,包括邮箱、密码哈希、创建时间" 确认后 → "第二步:实现用户注册接口,包括邮箱验证和密码强度检查" 确认后 → "第三步:实现登录接口,生成 JWT token"

为什么:小任务更容易验证,出错了也容易定位。

1.5. 先用 Mock 数据,别急着搞数据库

"先用 Mock 数据实现完整的前端功能,数据结构如下: [粘贴 JSON 示例] 等前端功能确认没问题后,我们再连接真实数据库。"

为什么:Mock 数据让你快速验证业务逻辑,避免在数据库配置上浪费时间。

1.6. 设置全局开发规则

在项目根目录创建.cursorrules.clinerules

# 开发规则 ## 代码风格 - 使用 ESLint + Prettier - 组件名用 PascalCase - 函数名用 camelCase - 文件名用 kebab-case ## 开发流程 1. 先定义 TypeScript 类型 2. 再实现功能代码 3. 最后写测试用例 ## 禁止事项 - 不要使用 any 类型 - 不要直接修改 props - 不要在循环中使用 useEffect

为什么:全局规则让 AI 生成的代码风格统一,减少后期重构。

2. 提示词工程(8 条)

2.1. 提供完整的错误信息

❌ 错误:"我的代码报错了" ✅ 正确:"这段代码在运行时报错: 错误信息: TypeError: Cannot read property 'name' of undefined at UserProfile.jsx:45:12 at renderWithHooks (react-dom.js:...) 代码: [粘贴完整的相关代码] 环境: - React 18.2.0 - Node.js 18.16.0 - 浏览器:Chrome 120 预期行为:应该显示用户名 实际行为:页面白屏并报错"

为什么:完整的上下文让 AI 一次性定位问题,不用来回问。

2.2. 用对比结构描述需求

❌ 错误:"优化这个函数" ✅ 正确:"优化这个函数: 当前性能: - 处理 1000 条数据耗时 2.3 秒 - 内存占用 150MB 目标性能: - 处理 1000 条数据 < 500ms - 内存占用 < 50MB 约束条件: - 不能改变函数签名 - 必须保持结果完全一致"

为什么:明确的目标和约束让 AI 知道优化的方向。

2.3. 提供输入输出示例

"实现一个格式化金额的函数: formatMoney(1234.5) → "¥1,234.50" formatMoney(1000000) → "¥1,000,000.00" formatMoney(0.99) → "¥0.99" formatMoney(-500) → "-¥500.00" 要求: - 支持负数 - 千位分隔符 - 保留两位小数"

为什么:具体示例比文字描述精确 100 倍。

2.4. 使用角色人设

"作为一个有 10 年经验的 React 性能优化专家, review 这段代码,指出所有可能的性能问题, 并给出具体的优化方案。 [粘贴代码]"

常用人设:

为什么:人设会影响 AI 的回答深度和角度。

2.5. 链式思考提示

"优化这个数据库查询,按以下步骤: 1. 先用 EXPLAIN 分析当前查询的执行计划 2. 识别性能瓶颈(全表扫描、临时表、文件排序) 3. 设计合适的索引策略 4. 重写查询语句 5. 对比优化前后的执行时间 当前查询: [粘贴 SQL]"

为什么:逐步推理比直接要答案准确率高 3 倍。

2.6. 约束式提示

"实现一个轮播图组件,约束条件: 技术栈: - 只用原生 JavaScript,不用任何库 - 不用 jQuery 性能要求: - 支持 100+ 张图片流畅切换 - 动画帧率 ≥ 60fps 兼容性: - 支持 Chrome/Firefox/Safari 最新版 - 移动端支持触摸滑动"

为什么:明确的约束防止 AI 引入不必要的依赖。

2.7. 多步验证

"创建一个用户注册表单,完成后请: 1. 用有效数据测试(正常注册流程) 2. 用无效数据测试: - 邮箱格式错误 - 密码太短 - 重复邮箱 3. 检查错误提示是否友好 4. 验证是否符合我们的组件规范(见 components/README.md)"

为什么:让 AI 自己检查输出,大幅减少 Bug。

2.8. 提供参考代码

"参考现有的 LoginForm 组件(见 src/components/LoginForm.jsx), 实现一个 RegisterForm 组件。 要求: - 保持相同的代码风格 - 使用相同的表单验证逻辑 - 复用相同的 UI 组件"

为什么:参考代码让 AI 理解你的代码风格,生成的代码更统一。

3. 上下文管理(6 条)

3.1. 检查 AI 的知识截止日期

"你知道 Tailwind CSS 的哪个版本? 如果是 v3,我需要给你 v4 的文档。"

常见的知识过期:

为什么:避免 AI 用过时的 API 写代码。

3.2. 主动提供最新文档

"我要用 Tailwind CSS v4,这是官方文档: [粘贴关键部分的文档] 请基于 v4 的语法实现一个响应式导航栏。"

为什么:最新文档确保 AI 用正确的 API。

3.3. 使用 @Codebase 引用

在 Cursor 中:

"@Codebase 我们的认证逻辑是怎么实现的? 我要实现一个类似的权限检查功能。"

为什么:让 AI 理解你的代码库,生成的代码更符合项目规范。

3.4. 附加截图

适用场景:

操作:

为什么:一张图胜过千言万语,能实现“一次性”生成正确的 UI。

3.5. 提供完整的技术栈信息

"项目技术栈: 前端: - React 18.2.0 - TypeScript 5.0 - Tailwind CSS 3.3 - React Router 6.10 后端: - Node.js 18.16 - Express 4.18 - PostgreSQL 14 - Redis 6.2 工具: - Vite 4.3 - ESLint + Prettier - Jest + React Testing Library"

为什么:完整的技术栈让 AI 生成兼容的代码。

3.6. 使用结构化的错误报告

## 问题描述 用户点击"保存"按钮后,数据没有保存成功 ## 错误信息

POST /api/users 500 Internal Server Error
Error: Cannot read property ‘id’ of undefined

## 环境信息 - 浏览器:Chrome 120 - 操作系统:macOS 14.0 - 后端版本:v1.2.3 ## 复现步骤 1. 打开用户编辑页面 2. 修改用户名 3. 点击"保存"按钮 4. 看到错误提示 ## 相关代码 [粘贴 API 路由代码] ## 已尝试的方案 - ✅ 检查数据库连接(正常) - ✅ 检查 Redis 连接(正常) - ❌ 重启服务器(问题依旧)

为什么:结构化的信息让 AI 快速定位问题。

4. 测试和验证(5 条)

4.1. 每次修改后立即测试

铁律:不要等 AI 写完一大堆代码再测试。

正确流程:

  1. AI 修改一个文件 → 立即测试

  2. 测试通过 → 继续下一个修改

  3. 测试失败 → 立即让 AI 修复

为什么:小步测试能快速定位问题,避免“改了 10 个文件不知道哪里错了”。

4.2. 打开浏览器控制台

快捷键:

检查:

为什么:控制台能看到 AI 看不到的运行时错误。

4.3. 让 AI 生成测试用例

"为这个用户注册函数生成完整的测试用例: [粘贴函数代码] 测试场景包括: - ✅ 有效输入(正常注册) - ❌ 邮箱格式错误 - ❌ 密码太短(< 8 位) - ❌ 重复邮箱 - ❌ 缺少必填字段 - ❌ SQL 注入尝试 - ❌ XSS 攻击尝试 使用 Jest + React Testing Library。"

为什么:AI 生成的测试用例覆盖率高,能发现你没想到的边界情况。

4.4. 使用 TDD(测试驱动开发)

"用 TDD 方式实现一个购物车功能: 1. 先写失败的测试: - 添加商品到购物车 - 修改商品数量 - 删除商品 - 计算总价 2. 写最少的代码让测试通过 3. 重构代码 4. 重复以上步骤"

为什么:TDD 确保代码质量,减少后期 Bug。

4.5. 创建测试检查清单

在项目根目录创建TEST_CHECKLIST.md

# 测试检查清单 ## 功能测试 - [ ] 所有按钮可点击 - [ ] 表单验证正常 - [ ] 数据正确保存 - [ ] 错误提示友好 ## 性能测试 - [ ] 页面加载 < 2 秒 - [ ] 列表渲染流畅(60fps) - [ ] 内存无泄漏 ## 兼容性测试 - [ ] Chrome 最新版 - [ ] Safari 最新版 - [ ] 移动端 Safari - [ ] 移动端 Chrome ## 安全测试 - [ ] 输入验证和清理 - [ ] SQL 注入防护 - [ ] XSS 防护 - [ ] CSRF 防护

为什么:检查清单确保不遗漏关键测试。

5. 生产代码(5 条)

5.1. 把 AI 代码当作初级开发者的代码

Review 重点:

为什么:AI 会写出“能跑”的代码,但不一定是“好”代码。

5.2. 安全检查清单

## 输入验证 - [ ] 所有用户输入都经过验证 - [ ] 使用白名单而非黑名单 - [ ] 长度限制和格式检查 ## 认证授权 - [ ] 密码正确哈希(bcrypt/argon2) - [ ] JWT token 有过期时间 - [ ] 敏感操作需要二次验证 ## 数据安全 - [ ] SQL 注入防护(使用参数化查询) - [ ] XSS 防护(输出转义) - [ ] CSRF 防护(使用 token) - [ ] 敏感数据加密存储 ## API 安全 - [ ] 使用 HTTPS - [ ] API key 不暴露在前端 - [ ] 限流防止暴力破解

为什么:AI 经常忽略安全细节,需要人工检查。

5.3. 性能优化检查

"分析这段代码的性能问题: [粘贴代码] 重点检查: - 是否有不必要的重渲染? - 是否有内存泄漏? - 是否有阻塞主线程的操作? - 是否有可以缓存的计算? 给出具体的优化方案和预期的性能提升。"

为什么:AI 生成的代码往往“能用但不快”。

5.4. 代码可维护性检查

检查点:

为什么:可维护的代码才能长期演进。

5.5. 使用 Git Checkpoint

关键节点创建检查点:

# 重大修改前gitcommit-m"checkpoint: before refactoring auth system"# 让 AI 执行任务# ...# 如果不满意,一键回滚gitreset--hardHEAD^

为什么:检查点让你敢于尝试大胆的重构。

6. 总结

AI 编程的核心是:把 AI 当作一个聪明但缺乏经验的初级开发者。

你需要:

记住这 30 条最佳实践,你的 AI 编程效率能提升 10 倍。

我是冴羽,10 年笔耕不辍,专注前端领域,更新了 10+ 系列、300+ 篇原创技术文章,翻译过 Svelte、Solid.js、TypeScript 文档,著有小册《Next.js 开发指南》、《Svelte 开发指南》、《Astro 实战指南》。

欢迎围观我的“网页版朋友圈”,每天分享前端知识、AI 干货。

http://www.jsqmd.com/news/792880/

相关文章:

  • Mirascope框架:工程化提示与LLM应用开发实践
  • Python开发者必备:Awesome清单高效选型与实战指南
  • “纠缠软件“是什么?Agent?还是Harness?
  • Instrukt框架:本地大模型的指令编排与智能体开发实战
  • Ozon新手选品工具对比:四款主流工具实测,哪个适合你?
  • 奶茶糖浆怎么选,才能让茶香更明显?
  • 2026年3月 电子学会青少年软件编程机器人技术六级等级考试试卷真题【理论综合】
  • LLM调用延迟飙升300%?,深度复盘奇点大会TOP3 API设计失误与生产级容错模板
  • Flutter-OH 三方库适配实战:permission_handler 权限统一管理 OpenHarmony 完整适配指南
  • 光伏电场口碑好的SF6气体监测报警装置生产厂家_公司_装置企业_机构#瑞智开元
  • IDE-AI基准测试实战:量化评估AI编程助手在真实开发环境中的表现
  • 多模态大语言模型(MLLM)实战:从架构解析到部署优化
  • 初识java(一):java的第一个代码
  • AI代理规则引擎:构建安全可控的智能体管控系统
  • Python自动化工具箱:从网页签到到价格监控的实战指南
  • 基于ESP32-S3与FreeRTOS的机械臂实时运动控制框架NeoClaw实战
  • 3分钟搞定苹果设备Windows驱动:一键安装USB和网络共享终极方案
  • txtskills:将llms.txt文档一键转换为AI智能体技能
  • Weaviate官方示例库全解析:从向量数据库入门到AI应用实战
  • 神经网络原理 第六章:支持向量机
  • 基于MCP协议构建标准化区块链数据服务:cryptoapis-mcp-utils实践指南
  • AI编程工具实战指南:从提示词到工作流,9款主流工具深度解析
  • 终极Zotero插件管理指南:如何一键安装数百个学术研究工具
  • AMD Ryzen终极调试指南:释放隐藏性能的完整教程
  • AI编码助手如何基于源码与实战指南精准生成Jetpack Compose代码
  • n8n-as-code:为AI编码助手注入n8n本体论,实现工作流代码化与智能开发
  • GitHub技能树项目解析:如何用awesome-skills-cn构建个人技术成长体系
  • 45nm工艺芯片设计:挑战、突破与优化实践
  • Python数据分析实战:从加载到聚合的全流程指南
  • Pytorch图像去噪实战(六十二):Nginx反向代理FastAPI去噪服务,支持上传限制、超时控制和公网访问