Claude Code: Claude Code 基础用法
最后更新:2026-08-31
基础用法是 Claude Code 的日常武器库——从写代码到修 Bug,从重构到写测试,覆盖开发者的核心工作场景。
💡 提示:Claude Code 最强的不是单次回答,而是"理解项目 → 修改代码 → 验证结果 → 迭代修复"的闭环能力。
📋 前置知识:第七章 交互模式与操作说明
1. 你将学到
- 代码生成与补全
- Bug 修复与调试
- 代码重构
- 测试编写
- 代码审查
- 文档生成
2. 代码生成
(1) 从零创建文件
TEXT
📖 仅展示
> 创建 src/services/email.ts,实现邮件发送服务:
> - 支持 HTML 和纯文本格式
> - 使用模板引擎渲染邮件内容
> - 添加重试机制(最多3次)
> - 写单元测试(mock SMTP)
Claude Code:
→ Creating src/services/email.ts
→ Creating src/services/__tests__/email.test.ts
→ Installing dependencies: nodemailer, handlebars
→ Running: npm test -- email.test.ts
✅ 5 tests passed
(2) 基于现有代码扩展
TEXT
📖 仅展示
> 在 UserService 中添加密码重置功能
Claude Code:
→ Reading src/services/user.ts
→ Reading src/models/user.ts
→ Reading src/services/email.ts (已存在的邮件服务)
→ Modifying src/services/user.ts (adding resetPassword)
→ Modifying src/routes/user.ts (adding POST /reset-password)
→ Creating tests for password reset
✅ All tests passed
▶ 示例 1: 生成 CRUD 模块
TEXT
📖 仅展示
> 创建完整的 Product CRUD 模块:
> 1. Prisma 模型定义
> 2. Repository 层
> 3. Service 层
> 4. Controller 层
> 5. 路由定义
> 6. 完整测试
Claude Code:
→ Reading prisma/schema.prisma (existing schema)
→ Adding Product model to schema
→ Creating src/repositories/product.repository.ts
→ Creating src/services/product.service.ts
→ Creating src/controllers/product.controller.ts
→ Creating src/routes/product.routes.ts
→ Creating tests/product.test.ts
→ Running: npm test
✅ 12 tests passed (CRUD: create, read, update, delete, list, search)
3. Bug 修复
(1) 指定 Bug 修复
TEXT
📖 仅展示
> 修复 src/utils/date.ts 中 relativeTime 函数在跨年时的计算错误
Claude Code:
→ Reading src/utils/date.ts
→ Reading tests/date.test.ts
→ Found bug: relativeTime uses daysOnly comparison
→ Fixing: adding year boundary check
→ Running: npm test -- date.test.ts
✅ All tests passed (including new edge case)
(2) 基于错误信息修复
TEXT
📖 仅展示
> 运行测试并修复所有失败用例
Claude Code:
→ Running: npm test
❌ 3 tests failed:
- auth.test.ts: token expiry check
- user.test.ts: email validation
- order.test.ts: date format
→ Reading failed test files...
→ Fixing auth.test.ts: adjusting time comparison logic
→ Fixing user.test.ts: updating regex pattern
→ Fixing order.test.ts: using ISO date format
→ Running: npm test
✅ All 47 tests passed
▶ 示例 2: 运行时错误修复
TEXT
📖 仅展示
> 应用启动报错:TypeError: Cannot read property 'id' of undefined at UserController.getProfile
Claude Code:
→ Reading src/controllers/user.controller.ts
→ Found: getProfile doesn't check if req.user exists
→ Adding null check with proper error response
→ Running: npm run build ✓
→ Running: npm test -- user.controller.test.ts
✅ All tests passed
4. 代码重构
(1) 函数级重构
TEXT
📖 仅展示
> 重构 src/utils/format.ts 中的 formatCurrency 函数,使用 Intl.NumberFormat
Claude Code:
→ Reading src/utils/format.ts
→ Replacing manual formatting with Intl.NumberFormat
→ Adding locale support (default: zh-CN)
→ Running: npm test -- format.test.ts
✅ All tests passed
(2) 模块级重构
TEXT
📖 仅展示
> 将 src/helpers/ 目录下的所有工具函数按功能重组到 src/utils/ 下:
> - 日期相关 → utils/date.ts
> - 字符串相关 → utils/string.ts
> - 数字相关 → utils/number.ts
> 更新所有 import 路径
Claude Code:
→ Scanning src/helpers/ (15 files)
→ Categorizing functions by type
→ Creating new files in src/utils/
→ Moving functions with proper exports
→ Updating 32 import statements across the project
→ Deleting src/helpers/
→ Running: npm test
✅ All 89 tests passed
5. 测试编写
▶ 示例 3: 批量补充测试
TEXT
📖 仅展示
> 为 src/services/ 下所有没有测试的 service 写测试,覆盖率目标 80%
Claude Code:
→ Scanning src/services/ (8 files)
→ Checking test coverage...
Missing tests:
- email.service.ts (0% coverage)
- payment.service.ts (0% coverage)
- search.service.ts (12% coverage)
→ Writing tests for email.service.ts (5 test cases)
→ Writing tests for payment.service.ts (8 test cases)
→ Writing tests for search.service.ts (6 test cases)
→ Running: npm test
✅ All new tests passed
Coverage:
- email.service.ts: 85%
- payment.service.ts: 82%
- search.service.ts: 88%
Average: 85% ✓
6. 代码审查与文档
(1) 代码审查
TEXT
📖 仅展示
> 审查 src/auth/jwt.ts 的安全性
Claude Code:
⚠️ Found 3 issues:
1. Hardcoded secret key (line 12) → Use env variable
2. No token expiry validation (line 34) → Add expiry check
3. Algorithm not specified (line 8) → Force RS256
Suggested fixes:
→ Line 12: process.env.JWT_SECRET
→ Line 34: if (decoded.exp < Date.now()/1000) throw new Error()
→ Line 8: algorithm: 'RS256'
(2) 文档生成
TEXT
📖 仅展示
> 为 src/api/ 下所有路由生成 API 文档
Claude Code:
→ Reading all route files (12 files)
→ Generating API documentation...
→ Creating docs/api.md with:
- Endpoint listing table
- Request/Response examples
- Authentication requirements
- Error codes reference
7. 综合示例:全流程开发
TEXT
📖 仅展示
# Alice 用 Claude Code 完成用户权限功能
> 实现用户权限系统:
> 1. 定义 Role 和 Permission 模型
> 2. 实现 RBAC 中间件
> 3. 添加权限检查装饰器
> 4. 写完整的集成测试
> 5. 生成 API 文档
Claude Code 执行过程:
→ Reading existing auth module...
→ Creating models/role.model.ts
→ Creating models/permission.model.ts
→ Creating middleware/rbac.ts
→ Creating decorators/require-permission.ts
→ Modifying routes to add permission checks
→ Writing integration tests (15 test cases)
→ Running: npm test → 15/15 passed ✓
→ Generating docs/permissions.md
Total: 8 files created, 4 files modified, 15 tests passing
❓ 常见问题
Q Claude Code 生成的代码质量如何?
A 对于常见模式和标准实现,质量很高。复杂业务逻辑和特殊场景仍需人工审查。建议始终 review 生成的代码。
Q 能一次修复多个 Bug 吗?
A 可以。描述清楚每个 Bug,Claude Code 会逐个修复并验证。但建议一次聚焦一个 Bug,减少出错概率。
Q 重构会破坏现有功能吗?
A 如果项目有完善的测试,Claude Code 会确保测试通过。没有测试时重构风险较高,建议先补测试再重构。
Q 测试写得好不好?
A 单元测试质量不错,特别是 happy path 和常见 edge case。边界情况和复杂 mock 场景可能需要手动补充。
Q 代码审查能替代人工审查吗?
A 不能完全替代。Claude Code 擅长发现常见安全问题和风格问题,但业务逻辑的正确性仍需人工判断。
Q 如何让 Claude Code 遵循项目代码风格?
A 在 CLAUDE.md 中写明编码规范,Claude Code 会遵循。也可以让它先读取 ESLint/Prettier 配置。
📖 小节
- 代码生成:从单文件到完整 CRUD 模块,一步到位
- Bug 修复:基于错误信息或描述,自动定位和修复
- 重构:函数级到模块级,自动更新所有引用
- 测试:批量补充测试,确保覆盖率达到目标
- 审查与文档:安全审查、API 文档自动生成
- 核心优势:理解→修改→验证→迭代的闭环
📝 作业
- 基础题(难度⭐):用 Claude Code 为一个函数生成单元测试,检查测试质量。
- 进阶题(难度⭐⭐):故意在项目中引入一个 Bug,用 Claude Code 修复,观察它的定位和修复过程。
- 挑战题(难度⭐⭐⭐):让 Claude Code 完成一个完整的功能模块(模型+服务+路由+测试+文档),全程 review 生成的代码。