Claude Code代码修改重构代码优化

代码修改与优化

掌握用 Claude Code 修改已有代码的正确方式,包括功能扩展、重构优化、性能提升和代码风格统一,让改代码比写代码更高效。

· 阅读约 6 分钟

改代码往往比写代码更难——你需要理解原有逻辑,在不破坏已有功能的前提下做出修改。Claude Code 在代码修改上特别有用,因为它能同时读懂原代码和你的修改意图。

基本:告诉 Claude Code 要改什么

最直接的方式:

> 修改 src/utils/validator.ts 里的 validateEmail 函数
> 现在的验证太严格了,要支持带 + 号的邮箱地址(比如 user+tag@example.com)
> getUserById 函数现在只返回用户基本信息
> 修改它,同时返回用户的订单数量(从 orders 表查)
> 注意不要影响其他调用这个函数的地方

Claude Code 会读取相关代码,理解上下文,然后给出修改建议,并解释改了什么、为什么这样改。


添加新功能

在现有代码基础上扩展功能:

给函数加参数

> formatDate 函数现在只格式化为 YYYY-MM-DD
> 加一个 format 参数,支持多种格式:
> - "date":YYYY-MM-DD(默认,保持向下兼容)
> - "datetime":YYYY-MM-DD HH:mm:ss
> - "relative":显示相对时间(3分钟前、昨天等)

给类加方法

> 给 UserService 类加一个 findByEmail 方法
> 参考现有的 findById 方法的风格
> 邮箱查询要不区分大小写

给 API 加参数

> GET /api/users 现在不支持筛选
> 加上以下查询参数的支持:
> - role:筛选用户角色
> - status:筛选账户状态(active/inactive)
> - createdAfter:按注册时间筛选(ISO 8601 格式)
> 多个参数可以组合使用

重构代码

让代码更清晰、更容易维护:

拆分过长的函数

> processOrder 函数有 200 行,太长了
> 帮我拆分成更小的函数,每个函数做一件事
> 拆分后要确保逻辑一致,给我看新的调用方式

消除重复代码

> src/api/ 目录下有很多路由文件
> 它们的错误处理代码几乎一样,都是 try-catch 然后 res.status(500).json()
> 帮我提取一个 asyncHandler 高阶函数,消除这个重复

改善命名

> 帮我检查 src/utils/helpers.ts 里的函数命名
> 有些函数名不够清晰,比如 fn1、process、handle 之类的
> 根据函数的实际功能,给出更好的命名建议

简化复杂逻辑

> 这段嵌套了三层的 if-else 很难读
> 帮我重构,用提前返回(early return)的方式简化:

function checkPermission(user, resource, action) {
  if (user) {
    if (user.role === 'admin') {
      return true;
    } else {
      if (resource.ownerId === user.id) {
        if (action !== 'delete') {
          return true;
        } else {
          return false;
        }
      } else {
        return false;
      }
    }
  } else {
    return false;
  }
}

性能优化

让代码跑得更快:

优化数据库查询

> 看一下 getUsersWithOrders 函数
> 它现在是 N+1 查询(循环里查数据库)
> 帮我改成批量查询,减少数据库请求次数

添加缓存

> getProductDetails 函数每次都查数据库
> 加上 Redis 缓存:
> - 缓存 key 用 product:{id}
> - 缓存时间 5 分钟
> - 商品更新时清除缓存(看 updateProduct 函数在哪里调用)

减少不必要的计算

> 这个组件在每次渲染时都重新计算 sortedItems
> 用 useMemo 优化,只有 items 或 sortOrder 变化时才重新计算

懒加载优化

> 这个 React 页面加载了很多图片,首屏很慢
> 帮我给图片加上懒加载(Intersection Observer)
> 进入视口前不加载,进入后才开始加载

修复代码质量问题

改善错误处理

> fetchUserData 函数遇到网络错误直接崩溃
> 加上错误处理:
> - 网络超时重试 3 次(间隔 1s、2s、4s)
> - 超过重试次数后抛出自定义错误(包含原始错误信息)
> - 请求过程中支持取消(AbortController)

补充类型定义

> 这个文件里有很多 any 类型
> 帮我把所有的 any 替换成准确的 TypeScript 类型
> 如果需要新定义接口,加在文件顶部

统一代码风格

> 这几个文件的风格不一致:
> - 有些用 function,有些用箭头函数
> - 有些用 async/await,有些用 .then()
> - 有些有详细注释,有些完全没有
> 按照我们的规范(看 CLAUDE.md)统一一下

安全地修改代码

修改前:了解影响范围

> 在修改 parseToken 函数之前,告诉我:
> - 哪些文件调用了这个函数
> - 修改会影响哪些功能
> - 有什么需要注意的地方

修改后:验证没有破坏已有功能

> 刚才修改了 validateUser 函数
> 运行和这个函数相关的测试,确认没有破坏已有功能

渐进式修改

对于大的改动,一步步来:

> 我想重构整个认证模块,但不想一次全改
> 先帮我做第一步:把 JWT 生成逻辑从 authController.ts 提取到单独的 tokenService.ts
> 其他部分暂时不动

常见场景

升级依赖后的代码修改

> 我们把 React 从 17 升级到 18 了
> 帮我检查代码里有没有不兼容的用法,需要修改哪些地方

适配新的接口格式

> 第三方 API 更新了响应格式
> 旧格式:{ data: { user: {...} } }
> 新格式:{ result: { userData: {...} } }
> 帮我找到所有使用旧格式的地方并更新

从 JS 迁移到 TS

> utils/formatter.js 是一个 JavaScript 文件
> 帮我转换成 TypeScript,加上完整的类型定义
> 保持原有逻辑不变

代码修改的原则

每次只改一件事:改性能就专注性能,不要同时重构结构。改完一件事确认没问题再继续。

改前理解,改后验证:先让 Claude Code 解释原来的代码,改完后运行测试确认。

告诉 Claude Code 你的限制:不能改接口签名(别的地方在用)、必须保持向下兼容、不能引入新依赖——这些约束要明确说出来。

标记本节教程为已读

记录您的学习进度,方便后续查看。