#################################### Tutorial 10: 氛围编程最佳实践 #################################### .. include:: ../links.ref .. include:: ../tags.ref .. include:: ../abbrs.ref ============ ========================== **Abstract** 氛围编程的最佳实践总结 **Authors** Walter Fan **Status** WIP **Updated** |date| ============ ========================== .. contents:: :local: 氛围编程原则 ============ 经过前面的学习,让我们总结氛围编程的核心原则: .. code-block:: text 氛围编程核心原则 ┌─────────────────────────────────────────────────────────────────┐ │ │ │ 1. 清晰优先 │ │ ─ AI 放大你的清晰度,也放大你的困惑 │ │ │ │ 2. 规格先行 │ │ ─ 先想清楚要什么,再让 AI 实现 │ │ │ │ 3. 迭代优化 │ │ ─ 不追求一次完美,快速迭代验证 │ │ │ │ 4. 保持判断 │ │ ─ AI 是助手不是主人,最终决策在你 │ │ │ │ 5. 持续学习 │ │ ─ 从 AI 的输出中学习,提升自己 │ │ │ └─────────────────────────────────────────────────────────────────┘ 工作流最佳实践 ============== 日常开发工作流 -------------- .. code-block:: text 氛围编程日常工作流 ┌─────────────────────────────────────────────────────────────────┐ │ │ │ 开始任务 │ │ │ │ │ ▼ │ │ 理解需求 ──→ 不清楚 ──→ 与 AI 讨论澄清 │ │ │ │ │ ▼ 清楚 │ │ 写简要规格 │ │ │ │ │ ▼ │ │ 让 AI 生成代码 │ │ │ │ │ ▼ │ │ 审查代码 ──→ 有问题 ──→ 让 AI 修改 │ │ │ │ │ ▼ 通过 │ │ 运行测试 ──→ 失败 ──→ 调试修复 │ │ │ │ │ ▼ 通过 │ │ 提交代码 │ │ │ └─────────────────────────────────────────────────────────────────┘ 大型功能开发流程 ---------------- 1. **需求分析阶段** :: 与 AI 讨论需求,澄清模糊点: 我要实现一个 [功能],请帮我分析: 1. 需要考虑哪些场景? 2. 有哪些边界情况? 3. 可能的技术挑战是什么? 2. **设计阶段** :: 请帮我设计这个功能的架构: 1. 模块划分 2. 接口设计 3. 数据流 4. 技术选型建议 3. **实现阶段** - 按模块分批实现 - 每个模块完成后测试 - 及时提交,保持小步快跑 4. **测试阶段** :: @module.py 请生成完整的测试用例,覆盖: 1. 正常流程 2. 边界条件 3. 异常处理 5. **代码审查** :: @feature/ 请审查这个功能的实现,关注: 1. 代码质量 2. 安全性 3. 性能 4. 可维护性 提示词最佳实践 ============== 结构化提示词 ------------ 使用一致的结构让 AI 更好理解: .. code-block:: markdown ## 任务 [简要描述要做什么] ## 上下文 [提供必要的背景信息] ## 要求 1. [具体要求 1] 2. [具体要求 2] 3. [具体要求 3] ## 约束 - [不要做什么] - [技术限制] ## 输出格式 [期望的输出形式] 渐进式细化 ---------- 从高层开始,逐步细化: **第一轮**:: 设计一个用户管理模块的整体架构 **第二轮**:: 基于这个架构,详细设计用户注册流程 **第三轮**:: 实现用户注册的 API 端点 **第四轮**:: 为注册 API 添加输入验证 上下文管理 ---------- 有效管理上下文,避免信息过载: .. list-table:: :header-rows: 1 :widths: 30 70 * - 做法 - 说明 * - 使用 @ 引用 - 精确引用需要的文件,而不是整个项目 * - 分批处理 - 大型任务分成多个小任务 * - 及时清理 - 新话题开新对话 * - 提供摘要 - 长对话中定期总结上下文 Rules 最佳实践 ============== 项目 Rules 模板 --------------- .. code-block:: markdown # Project: [项目名称] ## Tech Stack - Language: [语言和版本] - Framework: [框架和版本] - Database: [数据库] - Other: [其他重要技术] ## Code Style - [代码风格规范] - [命名约定] - [文件组织] ## Architecture - [架构模式] - [目录结构] - [模块划分] ## Conventions - [团队约定 1] - [团队约定 2] ## Examples [提供示例代码] 分层 Rules ---------- .. code-block:: text .cursor/rules/ ├── global.md # 通用规则 ├── python.md # Python 特定 ├── api.md # API 开发 ├── frontend.md # 前端开发 └── testing.md # 测试规范 代码质量最佳实践 ================ 生成代码后的检查清单 -------------------- .. code-block:: markdown ## AI 生成代码检查清单 ### 正确性 - [ ] 逻辑是否正确 - [ ] 边界条件是否处理 - [ ] 错误处理是否完善 ### 安全性 - [ ] 输入是否验证 - [ ] 是否有注入风险 - [ ] 敏感数据是否保护 ### 性能 - [ ] 算法复杂度是否合理 - [ ] 是否有 N+1 问题 - [ ] 是否需要缓存 ### 可维护性 - [ ] 命名是否清晰 - [ ] 是否有必要的注释 - [ ] 是否符合项目规范 ### 测试 - [ ] 是否有测试 - [ ] 测试覆盖是否充分 代码审查要点 ------------ 1. **不要盲目接受** - 理解每一行代码的作用 - 质疑不合理的实现 - 验证关键逻辑 2. **关注 AI 常见问题** - 过度复杂的解决方案 - 不必要的依赖 - 忽略项目现有代码 - 使用过时的 API 3. **保持代码一致性** - 与项目现有风格一致 - 使用项目已有的工具函数 - 遵循项目的架构模式 协作最佳实践 ============ 团队协作 -------- 1. **共享 Rules** 将 Rules 纳入版本控制,团队共享: .. code-block:: bash git add .cursorrules git add .cursor/rules/ git commit -m "Add team coding rules" 2. **建立提示词库** 团队共享有效的提示词模板: .. code-block:: text prompts/ ├── code-review.md ├── test-generation.md ├── bug-fix.md └── refactoring.md 3. **统一工具配置** - 统一 AI 模型选择 - 统一代码格式化工具 - 统一 linter 配置 与 AI 协作 ---------- 1. **明确角色分工** - **你**: 需求、设计、决策、审查 - **AI**: 实现、建议、解释、生成 2. **建立反馈循环** :: 你的实现有以下问题: 1. [问题 1] 2. [问题 2] 请修改并解释你的改动 3. **利用 AI 学习** :: 你刚才使用了 [某技术/模式], 请详细解释: 1. 为什么选择这种方式 2. 有什么优缺点 3. 什么场景下适用 常见陷阱与避免 ============== 陷阱 1:过度依赖 ---------------- **问题**: 完全依赖 AI,失去自己的判断力 **避免**: - 理解 AI 生成的每一行代码 - 定期手写代码保持技能 - 对关键逻辑进行人工验证 陷阱 2:上下文丢失 ------------------ **问题**: 长对话后 AI 忘记之前的上下文 **避免**: - 定期总结对话上下文 - 重要信息写入 Rules - 大任务分多个对话 陷阱 3:盲目接受 ---------------- **问题**: 不审查就使用 AI 生成的代码 **避免**: - 建立代码审查清单 - 运行测试验证 - 关注安全和性能 陷阱 4:提示词不清 ------------------ **问题**: 模糊的提示词导致不理想的结果 **避免**: - 使用结构化提示词 - 提供具体的示例 - 明确约束条件 陷阱 5:忽略规格 ---------------- **问题**: 跳过规格直接让 AI 写代码 **避免**: - 先写简要规格 - 让 AI 确认理解 - 分步骤实现 效率提升技巧 ============ 快捷键熟练度 ------------ .. list-table:: :header-rows: 1 :widths: 30 70 * - 快捷键 - 用途 * - ``Cmd+L`` - 快速打开 Chat * - ``Cmd+K`` - 快速内联编辑 * - ``Cmd+I`` - 多文件编辑 * - ``Tab`` - 接受补全 * - ``Cmd+Shift+L`` - 新建 Chat 常用提示词收藏 -------------- 建立你的提示词快捷方式: .. code-block:: text # 我的常用提示词 ## 代码生成 /gen: 生成代码,要求类型注解和文档 ## 测试 /test: 生成 pytest 测试,包含正常、边界、异常 ## 审查 /review: 审查代码质量、安全、性能 ## 解释 /explain: 解释代码的作用和原理 ## 重构 /refactor: 重构代码,保持功能不变 工作流自动化 ------------ 1. **Git Hook 集成** - pre-commit: AI 代码审查 - commit-msg: 生成 commit message 2. **CI/CD 集成** - PR 自动审查 - 测试覆盖率检查 持续改进 ======== 定期回顾 -------- 每周/每月回顾你的氛围编程实践: 1. 哪些提示词效果好? 2. 哪些场景 AI 帮助最大? 3. 哪些地方需要改进? 4. 学到了什么新技巧? 更新 Rules ---------- 根据项目演进更新 Rules: - 技术栈升级 - 新的代码规范 - 团队约定变化 - 发现的最佳实践 关注社区 -------- - 关注 AI 编程工具的更新 - 学习社区分享的技巧 - 参与讨论和分享 小结 ==== 氛围编程最佳实践总结: **核心原则**: 1. 清晰优先 2. 规格先行 3. 迭代优化 4. 保持判断 5. 持续学习 **工作流**: - 理解 → 规格 → 生成 → 审查 → 测试 → 提交 **关键技能**: - 结构化提示词 - 有效的上下文管理 - 代码审查能力 - 持续改进意识 氛围编程不是取代编程能力,而是放大你的能力。 掌握这些最佳实践,让 AI 成为你最强大的编程伙伴。 进一步学习 ========== 推荐资源 -------- - `Cursor 官方文档 `_ - `Anthropic Prompt Engineering `_ - `AI-Assisted Development `_ 社区资源 -------- - `Cursor Directory `_: 社区 Rules 分享 - `Awesome Cursor Rules `_ - `Prompt Engineering Guide `_ 练习 ==== 1. 创建你的个人 Rules 文件 2. 建立你的提示词模板库 3. 实践一个完整的 SDD 流程 4. 与团队分享你的最佳实践 5. 定期回顾和改进你的工作流 结语 ==== 氛围编程代表了软件开发的新范式。它不是简单地让 AI 写代码, 而是建立人与 AI 之间高效协作的框架。 记住: **AI 是生产力放大器——它既放大你的清晰度,也放大你的困惑。** 保持清晰的思维,建立系统的方法,持续学习和改进, 你就能在 AI 时代成为更高效的开发者。 祝你的氛围编程之旅愉快!🚀