最佳实践

Claude Code 高效使用的最佳实践,从项目初始化到团队协作的全面指南

最佳实践

这篇文档汇集了大量 Claude Code 用户在实际开发中总结出的经验。无论你是刚开始使用 Claude Code 的新手,还是已经有一定基础想进一步提效的老手,都能在这里找到有价值的技巧。

我们按照从入门到进阶的顺序组织内容,建议你先通读一遍,然后在日常工作中逐步应用。

项目初始化最佳实践

好的开始是成功的一半。在一个项目中首次使用 Claude Code 之前,花 10 分钟做好初始化,后续每一次交互都会更高效。

第一步:创建 CLAUDE.md

这是最重要的一步。CLAUDE.md 就像你给 Claude 写的一份「项目说明书」,每次启动 Claude Code 时它会自动读取这个文件,理解你的项目背景。

为什么这一步如此重要?

不写 CLAUDE.md,你会反复跟 Claude 解释同样的事情:

你:用 pnpm 安装依赖
Claude:好的,运行 npm install...
你:不是 npm,是 pnpm!
Claude:抱歉,运行 pnpm install...

有了 CLAUDE.md,这些基础信息只需说一次。

CLAUDE.md 模板示例:

# 我的项目名称

## 概述
这是一个基于 Next.js 15 的电商后台管理系统,使用 TypeScript 编写。

## 技术栈

- 运行时:Node.js 22 LTS
- 框架:Next.js 15 (App Router)
- 样式:Tailwind CSS v4
- 数据库:PostgreSQL 16 + Prisma ORM
- 包管理器:pnpm 9
- 测试框架:Vitest + Playwright

## 常用命令

- 安装依赖:`pnpm install`
- 开发服务器:`pnpm dev`(端口 3000)
- 运行测试:`pnpm test`
- 代码检查:`pnpm lint`
- 数据库迁移:`pnpm prisma migrate dev`
- 构建生产:`pnpm build`

## 编码规范

- 严格使用 TypeScript,禁止 `any`
- React 组件使用函数式写法 + hooks
- 样式只用 Tailwind,不写内联 style 和 CSS 文件
- 所有 API 路由统一返回 `{ success: boolean, data?: T, error?: string }`
- 数据库查询统一走 service 层,不在 route 中直接调用 Prisma
- 提交信息格式:`feat:` / `fix:` / `docs:` / `refactor:` 等前缀

## 项目结构

- `src/app/` — 页面和 API 路由(App Router)
- `src/components/` — 可复用 UI 组件
- `src/components/ui/` — 基础组件(Button、Input 等)
- `src/services/` — 业务逻辑层
- `src/lib/` — 工具函数和配置
- `prisma/` — 数据库 schema 和迁移文件

## 注意事项

- 不要手动修改 `prisma/migrations/` 下的文件
- 环境变量配置在 `.env.local`(不提交到 Git)
- API 鉴权中间件在 `src/middleware.ts`
- 图片资源放 `public/images/`,使用 next/image 组件加载

使用 /init 快速生成:

如果不想手写,可以用 /init 命令让 Claude 自动分析项目并生成:

/init

Claude 会扫描你的项目结构、package.json、配置文件等,自动生成一份 CLAUDE.md。然后你再手动补充一些它可能遗漏的团队约定。

第二步:配置 .claudeignore

.gitignore 类似,.claudeignore 告诉 Claude 哪些文件不需要关注。这不仅能加速搜索,还能避免 Claude 被无关文件干扰。

# .claudeignore

# 依赖目录
node_modules/
vendor/
.venv/

# 构建产物
dist/
build/
.next/
out/

# 大型数据文件
*.sql
*.csv
*.sqlite
data/

# 二进制和媒体文件
*.jpg
*.png
*.mp4
*.zip

# 自动生成的代码
generated/
*.gen.ts
prisma/migrations/

# 日志
logs/
*.log

第三步:在 CLAUDE.md 中描述目录结构

这一步经常被忽略,但效果显著。Claude 理解了目录结构后,就知道该在哪里找文件、在哪里创建文件:

## 项目结构
src/
├── app/                 # Next.js App Router
│   ├── (auth)/          # 需要登录的页面
│   ├── (public)/        # 公开页面
│   └── api/             # API 路由
├── components/
│   ├── ui/              # 基础 UI 组件(shadcn/ui)
│   ├── forms/           # 表单组件
│   └── layouts/         # 布局组件
├── services/            # 业务逻辑(每个模块一个文件)
├── hooks/               # 自定义 React hooks
├── lib/                 # 工具函数
│   ├── auth.ts          # 认证相关
│   ├── db.ts            # 数据库连接
│   └── validators.ts    # Zod schema 定义
└── types/               # TypeScript 类型定义

日常编码最佳实践

初始化做好后,日常使用中的这些习惯能让你事半功倍。

清晰描述需求,而非模糊指令

这是最基本也是最重要的原则。Claude 不是读心术大师,你说得越清楚,它做得越好。

模糊指令(效果差) 清晰描述(效果好)
「改一下登录功能」 「在 src/app/api/auth/login/route.ts 中添加登录失败次数限制:同一 IP 5 分钟内失败 5 次后锁定 15 分钟,用 Redis 存储计数」
「帮我写个组件」 「创建一个 UserAvatar 组件,放在 src/components/ui/ 下。接受 name 和 imageUrl 两个 props,没有图片时显示姓名首字母,使用 Tailwind 的 rounded-full 做圆形头像」
「这个有 bug,修一下」 「用户反馈在商品列表页点击翻页后,筛选条件会丢失。请检查 src/app/products/page.tsx 中的分页逻辑,确保 URL query params 在翻页时被保留」

善用 @ 引用提供上下文

当你需要 Claude 参考特定文件时,用 @ 符号直接引用,比让它自己搜索更快更准:

看看 @src/services/order-service.ts  @src/types/order.ts
然后在 order-service 中添加一个取消订单的方法要检查订单状态是否允许取消

几种 @ 引用方式:

@src/services/auth.ts       # 引用单个文件
@src/components/            # 引用整个目录
@package.json               # 引用配置文件
@https://nextjs.org/docs    # 引用在线文档(会抓取内容)

省钱技巧:主动用 @ 引用相关文件,比让 Claude 自己搜索整个项目要便宜得多。因为 Claude 搜索时会读取大量文件,消耗额外的 token。

一次只做一件事

避免在一个提示中塞太多任务。Claude 在专注做一件事时表现最好:

# 不推荐一次性要求太多
"给用户模块添加头像上传功能,顺便把登录页的样式改一下,
还有那个搜索框的防抖也加上,对了密码重置的邮件模板也更新一下。"

# 推荐分步进行
 1 "在 UserProfile 组件中添加头像上传功能,使用 S3 存储"
 2 "更新登录页样式,参考 @docs/design-spec.md 中的设计稿"
 3 "给搜索框添加 300ms 防抖,使用自定义 hook"
 4 "更新密码重置邮件模板,参考 @src/templates/welcome.html 的风格"

让 Claude 先看再改

处理已有代码时,先让 Claude 理解代码再动手修改,效果远比直接修改好:

# 第一步先理解
"阅读 @src/services/payment-service.ts,告诉我现在支付流程的处理逻辑,
特别是错误处理和重试机制。不要改任何代码。"

# 第二步再规划
"基于你的理解,我想添加微信支付渠道。请制定修改方案,列出需要改动的地方。"

# 第三步执行修改
"方案看起来没问题,开始执行吧。先改 payment-service.ts。"

用 Plan Mode 处理复杂任务

对于涉及多个文件的大型任务,使用 Plan Mode(按 Shift+Tab 切换)让 Claude 先制定计划:

[Plan Mode]
我需要给现有系统添加 RBAC(基于角色的访问控制)权限系统。
现在用户只有 admin 和 user 两种角色,我需要支持自定义角色和细粒度权限。
请先分析现有代码,制定详细的实施计划。

Claude 会生成一份分步计划,你确认后再切换回正常模式逐步执行。

善用 /clear 和 /compact

这两个命令是上下文管理的核心工具:

/compact    # 压缩当前对话历史,保留关键信息,释放上下文空间
/clear      # 彻底清空对话历史,从零开始

# 使用时机:
# - 切换到完全不同的任务 → /clear
# - 同一任务但对话太长 → /compact
# - 感觉 Claude 的回复变差了(上下文过载)→ /compact
# - 刚完成一个功能,要开始下一个 → /clear

重要原则:当你换一个话题时,一定要先 /clear。残留的旧上下文不仅浪费 token,还可能让 Claude 的回复受到干扰。

代码审查最佳实践

Claude Code 不仅能写代码,还能帮你审查代码。

使用 /review 命令

快速审查当前 Git 变更:

/review

Claude 会检查所有未提交的更改,指出潜在问题:

  • 逻辑错误和边界情况
  • 安全隐患(SQL 注入、XSS 等)
  • 性能问题
  • 代码风格不一致
  • 缺少错误处理

让 Claude 写测试验证修改

修改代码后,让 Claude 写测试来验证:

我刚才修改了 @src/services/order-service.ts 中的取消订单逻辑
请为这个方法编写单元测试覆盖以下场景
1. 正常取消待发货订单
2. 尝试取消已发货订单应该失败
3. 取消不存在的订单
4. 并发取消同一订单

多轮审查工作流

对于重要的代码变更,可以进行多轮审查:

# 第一轮整体审查
"审查 @src/services/payment-service.ts 的最新改动,
重点关注安全性和错误处理。"

# 根据反馈修改后第二轮
"请重新审查修改后的代码,这次重点关注性能和边界情况。"

# 第三轮可选):对比审查
"对比修改前后的代码,确认所有问题都已修复,没有引入新问题。"

调试最佳实践

Bug 修复是 Claude Code 的强项之一。掌握正确的调试姿势,能让 Claude 帮你更快定位问题。

提供完整的错误日志

不要只给 Claude 看错误信息的最后一行,提供完整的上下文:

运行 pnpm build 时报错了,完整错误日志如下:

Type error: Argument of type 'string | undefined' is not assignable to parameter of type 'string'. Type 'undefined' is not assignable to type 'string'.

42 | const user = await getUser(session.userId) | ^^^^^^^ 43 | return NextResponse.json(user)

这个错误发生在 @src/app/api/user/route.ts 
我怀疑是 session 类型定义的问题请帮我检查

分步调试:先诊断后修复

别急着让 Claude 直接修复,先让它诊断:

# 第一步诊断
"用户报告登录后偶尔会跳转到 404 页面。
请检查 @src/middleware.ts 和 @src/app/(auth)/layout.tsx,
分析可能导致这个问题的原因。先不要修改代码。"

# 第二步确认原因后再修复
"你的分析很有道理,确实是 session 过期时重定向逻辑有问题。
请修复这个问题,同时添加适当的错误日志方便后续排查。"

用截图辅助

Claude Code 支持读取截图,对于 UI 相关的 bug 特别有用:

看看这张截图 @screenshot.png表格的最后一列文字被截断了
请检查 @src/components/DataTable.tsx 中的样式修复这个问题

在终端中,你可以直接拖拽图片到 Claude Code 的输入区域,它会自动处理。

Git 工作流最佳实践

Claude Code 与 Git 深度集成,善用这些特性能让版本管理更轻松。

使用 /commit 自动生成提交消息

Claude 会分析你的代码变更,自动生成规范的提交消息:

/commit

生成的提交消息通常包含:

  • 变更类型前缀(feat、fix、refactor 等)
  • 简洁的变更描述
  • 影响范围说明

如果你对自动生成的消息不满意,可以要求修改:

/commit
# Claude 生成的消息不够好?
"提交消息请更详细一些,说明为什么要改这个逻辑"

功能分支 + PR 工作流

推荐的工作流程:

# 1. 创建功能分支
git checkout -b feature/order-cancel

# 2. 启动 Claude Code 开发
claude

# 3. 开发过程中多次小步提交
> "实现取消订单的基本逻辑"
> /commit

> "添加取消原因字段和验证"
> /commit

> "添加取消订单的单元测试"
> /commit

# 4. 完成开发,创建 PR
> 为当前分支创建 Pull Request,总结所有提交的变更,生成规范的 PR 描述

避免在 main 分支直接修改

# 在 CLAUDE.md 中添加这条规则:
## Git 规范

- 所有修改必须在功能分支上进行,不要直接修改 main 分支
- 分支命名:feature/xxx、fix/xxx、refactor/xxx
- 提交前运行 `pnpm lint && pnpm test` 确保没有问题

写入 CLAUDE.md 后,Claude 会自动遵守这些规则。如果你不小心在 main 分支让它修改代码,它会提醒你先创建分支。

团队协作最佳实践

Claude Code 在团队中使用时,统一规范能让协作更顺畅。

共享 CLAUDE.md 规范

将 CLAUDE.md 提交到 Git 仓库,团队成员共享同一份项目配置:

# 项目根目录的 CLAUDE.md → 提交到 Git
git add CLAUDE.md
git commit -m "docs: add CLAUDE.md project configuration"

# 个人偏好的配置 → 放在 .claude/CLAUDE.md,加入 .gitignore
echo ".claude/CLAUDE.md" >> .gitignore

团队 CLAUDE.md 应包含:

  • 项目技术栈和架构说明
  • 编码规范和命名约定
  • 常用命令和脚本
  • 目录结构说明
  • 团队约定(分支策略、提交规范、review 流程)

个人 .claude/CLAUDE.md 可以包含:

  • 个人编码偏好
  • 常用代码片段
  • 特定开发环境配置

PR Review 标准化

在 CLAUDE.md 中定义 PR review 标准,让 Claude 执行一致的审查:

## PR Review 标准
审查代码时请检查以下方面:
1. **功能正确性**:是否完整实现了需求
2. **错误处理**:是否覆盖了异常情况
3. **安全性**:是否有 SQL 注入、XSS、权限绕过等风险
4. **性能**:是否有不必要的数据库查询、内存泄漏
5. **测试覆盖**:新增代码是否有对应测试
6. **代码风格**:是否符合项目规范
7. **文档**:公共 API 是否有 JSDoc 注释

代码风格一致性

通过 CLAUDE.md 强制统一代码风格:

## 代码风格

- 命名:组件用 PascalCase,函数/变量用 camelCase,常量用 UPPER_SNAKE_CASE
- 文件名:组件文件用 PascalCase(如 UserAvatar.tsx),其余用 kebab-case
- import 顺序:React → 第三方库 → 内部模块 → 类型 → 样式
- 函数最大行数:50 行,超过请拆分
- 组件 props 超过 3 个时用 interface 定义

进阶技巧汇总

以下是一些资深用户积累的高级技巧:

自定义 Slash 命令

.claude/commands/ 目录下创建自定义命令模板:

# .claude/commands/review-security.md
请对以下代码进行安全审查,重点检查:
1. SQL 注入风险
2. XSS 攻击面
3. CSRF 防护
4. 权限校验是否完整
5. 敏感数据是否加密
6. 日志中是否泄露敏感信息

检查范围:$ARGUMENTS

使用时:

/review-security @src/app/api/

多文件协同修改

需要同时修改多个文件时,给 Claude 清晰的全局视图:

我需要给订单系统添加优惠券功能涉及以下文件

- @src/types/coupon.ts  新建定义优惠券类型
- @src/services/coupon-service.ts  新建优惠券业务逻辑
- @src/services/order-service.ts  修改在结算时应用优惠券
- @src/app/api/coupons/route.ts  新建优惠券 API
- @prisma/schema.prisma  修改添加 Coupon 模型

请按照上面的顺序依次处理每完成一个文件告诉我

利用 Extended Thinking

对于复杂的架构决策,让 Claude 使用扩展思考:

[使用 Opus 模型]
我在考虑把现在的 REST API 迁移到 GraphQL。
请深入分析利弊,考虑以下因素:
1. 现有 50+ 个 API 端点的迁移成本
2. 前端查询优化的收益
3. 缓存策略变化
4. 团队学习曲线
5. 与现有 React Query 的集成方案

不需要写代码,给我一份详细的技术分析报告。

让 Claude 自己验证

养成让 Claude 验证自己修改的习惯:

修改完成后,请:
1. 运行 pnpm lint 检查是否有格式问题
2. 运行 pnpm test 确认没有破坏现有测试
3. 如果有类型错误,自己修复

常见误区

最后,列举一些应该避免的做法:

误区 正确做法
把整个文件内容粘贴到对话中 @文件路径 引用
一个提示让 Claude 做 5 件事 一次做一件,分步进行
描述需求时含糊不清 给出具体的文件、行为、预期结果
不用 CLAUDE.md 花 10 分钟写好,节省后续无数时间
从不 /clear 或 /compact 换话题时 /clear,对话长时 /compact
不让 Claude 理解就直接改 先读代码,再规划,最后执行
只用 Opus 做所有事情 日常用 Sonnet,复杂决策才用 Opus
出错了反复重试同样的命令 换个思路,提供更多上下文

掌握这些最佳实践需要时间,建议你先从最基本的几点开始:创建 CLAUDE.md、清晰描述需求、一次做一件事。这三点就能显著提升你的使用体验。随着使用的深入,再逐步应用更多进阶技巧。

🚀
开始使用 QCode — AI 编程助手
Claude Code 官方中继,稳定快速,开箱即用
查看套餐定价 → 注册账号