Verdent Docs
按任务指南

改进与重构代码

使用 Verdent 进行代码改进与重构的最佳实践

Verdent for VS Code 帮助你在多个文件之间安全地重构和改进代码,同时保留原有功能。借助 Plan Mode 与 Explorer 子智能体,你可以在做出改动前识别出所有受影响的文件,确保全面重构而不遗漏任何实例。

你将学到

  • 提出聚焦于结果而非实现的有效重构请求
  • 在多个文件之间安全重构并管理依赖关系
  • 请求代码质量改进与优化建议
  • 用多阶段方法处理大规模重构项目
  • 通过算法与架构改进来优化性能
  • 在重构过程中保留代码功能

前置条件

在使用 Verdent 进行重构之前:

  • 已安装 Verdent 扩展的 Visual Studio Code
  • 在 VS Code 中打开的代码库或项目工作区
  • 拥有可用积分的有效 Verdent 套餐
  • 推荐使用版本控制(Git),以便在需要时安全回滚

提出有效的重构请求

描述你想改进什么以及为什么,而不是该如何修复。让 Verdent 分析代码,并基于你的项目模式提出最佳方案。

有效的重构请求:

聚焦于你想要的结果,而不是实现方式:

Refactor the UserController to improve readability and reduce duplication
This authentication logic is scattered across multiple files. Consolidate it into a single module
Improve error handling in the API layer to be more consistent and informative

Verdent 会分析代码、识别所有受影响的文件、检查模式,并提出符合你代码库约定的具体重构策略。

最佳实践:使用 Plan Mode

在 Plan Mode 中开始重构请求。Verdent 将:

  1. 分析代码并识别所有受影响的文件
  2. 在做出改动前呈现详细的重构计划
  3. 就实现偏好提出澄清问题
  4. 准确展示将改动哪些内容、以及改动顺序
  5. 允许你审阅并优化方案

Plan Mode 示例:

In Plan Mode: Refactor authentication logic to use a centralized authentication utility

Verdent 将:

  • 使用 Explorer 找到所有认证代码所在位置
  • 识别模式与不一致之处
  • 提出统一的认证接口
  • 展示将修改哪些文件
  • 说明重构顺序

你可以请求 Verdent 将计划保存到 plan.md 文件,以便在执行前进行额外审阅和团队讨论。

使用 Explorer 进行全面搜索:

对于复杂的重构,明确要求 Verdent 使用 Explorer 智能体进行彻底搜索:

Use the Explorer agent to find all places where we manually validate email addresses, then refactor them to use a centralized validation utility

这能确保 Verdent 发现每一处需要更新的位置,防止代码库中出现不一致的重构。

Plan Mode 对于重构至关重要。它通过在执行前准确展示将改动的内容来避免意外,并允许你基于架构考量优化方案。


多文件重构

Verdent 在多个文件之间重构,同时维护导入、依赖关系和跨文件引用。它会识别所有受影响的文件,按正确顺序更新它们,并确保整个代码库的一致性。

多文件重构的工作方式:

  1. 发现阶段:Verdent(使用 Explorer)找到所有需要改动的文件
  2. 依赖分析:识别文件之间的依赖关系以确定更新顺序
  3. 创建计划:展示所有将被修改的文件以及改动顺序
  4. 顺序更新:按依赖顺序修改文件(例如,先更新类型,再更新使用它们的组件)
  5. 导入管理:自动更新导入、导出和跨文件引用
  6. 验证:检查改动在所有文件中是否一致

多文件重构通过自动化的依赖追踪来保留功能,Verdent 会以原子方式更新所有受影响的文件。

示例:

Rename the User interface to UserProfile across the entire project

Verdent 将:

  • 找到所有导入或使用 User 的文件
  • 识别类型定义、实现和使用处
  • 先更新类型定义,再更新实现,最后更新使用处
  • 调整所有导入语句
  • 确保整个代码库的一致性

使用 Plan Mode 审阅范围:

在执行多文件重构之前,在 Plan Mode 中审阅完整范围:

In Plan Mode: Extract the authentication logic from UserController into a separate AuthService

Verdent 将展示:

  • 将创建哪些文件(新的 AuthService)
  • 将修改哪些文件(UserController 及所有导入方)
  • 哪些代码将从 UserController 移动到 AuthService
  • 导入和依赖关系将如何更新

这能防止意外的范围扩大,并确保你在继续之前理解全部影响。


请求代码质量改进

Verdent 不会在未被询问时主动提出改进建议。不过,你可以随时请求代码质量审查和改进建议。

请求广泛的代码质量审查:

Review this code for potential improvements
Suggest ways to improve code quality in the UserService module
Are there any performance optimizations we could make here?
Analyze the PaymentController for maintainability issues

Verdent 分析代码并针对以下方面提供具体建议:

  • 可读性:变量命名、函数拆解、注释清晰度
  • 性能:算法复杂度、冗余操作、缓存机会
  • 可维护性:代码重复、耦合、关注点分离
  • 最佳实践:设计模式、错误处理、测试覆盖率
  • 安全性:输入验证、认证检查、数据暴露

若需针对性反馈,请引用特定文件:

@services/UserService.js Review this module for dependency injection improvements
@controllers/PaymentController.js Identify opportunities to reduce complexity

Verdent 会结合你的项目模式审查指定代码,并提供可执行的建议。


大规模重构项目

对于大规模重构,使用 Plan Mode 配合多阶段方法以获得最可靠的结果。Verdent 会将重构拆解为可管理的阶段,让你在继续之前审阅并批准每个阶段。

多阶段重构工作流:

阶段 1:初步分析

在 Plan Mode 中使用 Explorer 智能体识别所有受影响的文件和依赖关系:

In Plan Mode: Use Explorer to analyze our codebase and create a plan to replace our custom authentication with OAuth 2.0

Verdent 执行全面分析:

  • 识别所有与认证相关的代码
  • 映射依赖关系和集成点
  • 评估复杂度与风险区域
  • 提出阶段划分

阶段 2:阶段规划

Verdent 创建多阶段计划供审阅:

示例计划:

  • 阶段 1:添加 OAuth 库并配置端点
  • 阶段 2:更新用户模型和数据库模式
  • 阶段 3:迁移现有认证逻辑
  • 阶段 4:移除已弃用的认证代码
  • 阶段 5:更新测试和文档

每个阶段包括:

  • 将被修改的文件
  • 预估复杂度
  • 对前序阶段的依赖
  • 风险评估

阶段 3:逐阶段执行

一次执行一个阶段,并在阶段之间进行测试:

  1. 在 Plan Mode 中批准阶段 1
  2. 切换到 Agent Mode 并执行
  3. 彻底测试以验证阶段 1 正常工作
  4. 返回 Plan Mode 进行阶段 2
  5. 重复直到所有阶段完成

阶段 4:迭代优化

每个阶段后审阅结果。若出现问题:

  • 调整剩余阶段的计划
  • 必要时增加纠正阶段
  • 基于发现优化方案

这种分阶段方法确保安全性,并允许在大型重构项目过程中出现问题时进行修正。

大规模重构应始终配合版本控制进行。在每个阶段后提交,以便在出现问题时可以回滚而不丢失全部进度。


性能优化

Verdent 分析代码中的性能瓶颈,并提出优化建议,包括算法复杂度改进、高效数据结构和资源使用减少。

改进算法复杂度:

Analyze the performance of this data processing function and suggest improvements
Can we improve the time complexity of this search algorithm?

Verdent 会识别什么:

  • 算法复杂度:O(n²) 循环、嵌套迭代、低效搜索
  • 冗余计算:重复计算、不必要的操作
  • 内存问题:内存泄漏、过度分配、大对象保留

示例:

Optimize the searchProducts function that's currently O(n²)

Verdent 分析该函数,识别低效之处(嵌套循环或重复线性搜索),并提出具体改进:

  • 用哈希表替换嵌套循环以实现 O(n) 查找
  • 排序后使用二分查找以达到 O(log n) 复杂度
  • 缓存计算结果以避免冗余计算
  • 为昂贵操作实现记忆化

响应包括:

  • 当前复杂度:说明当前代码为何慢
  • 建议方案:具体的算法或数据结构变更
  • 性能提升:预估改进(例如 O(n²) → O(n log n))
  • 权衡取舍:内存使用、代码复杂度、可维护性考量

优化 UI 组件和渲染:

Optimize this component to reduce unnecessary re-renders

Verdent 会识别什么:

  • 前端性能:不必要的重新渲染、过大的包体积、阻塞操作
  • 组件生命周期:低效的 useEffect 依赖、缺失的记忆化
  • 状态管理:冗余的状态更新、prop drilling

Verdent 分析你的组件并建议优化方案,如 React.memo、useMemo、useCallback 或组件拆分。

识别并修复 API 和数据库瓶颈:

Identify performance bottlenecks in the API request handler

Verdent 会识别什么:

  • 数据库性能:N+1 查询、缺失索引、低效连接
  • API 性能:慢端点、低效数据获取、缺失缓存

Verdent 检查查询模式,建议数据库索引、缓存策略和 API 优化技术。

进行性能优化时,请提供关于典型数据规模和性能约束的上下文。这有助于 Verdent 提出适合你规模的方案(例如 100 项 vs 100 万项)。

优化前先进行性能剖析,测量性能影响以确保优化带来有意义的改进。


在重构过程中保留功能

Verdent 致力于在重构过程中保留代码功能,在改进内部实现的同时维持相同的输入、输出和行为。

Verdent 如何保留功能:

  • 输入/输出分析:识别函数签名、API 契约和预期行为
  • 测试感知:将现有测试视为行为规范
  • 保守变更:做出最小改动以实现重构目标
  • 验证:可生成或运行测试以验证功能得以保留

安全重构的最佳实践:

  1. 始终测试重构后的代码 —— 即使有 Verdent 的分析,手动或自动测试也能验证功能得以保留,尤其对于复杂重构

  2. 使用版本控制 —— 重构前提交,以便在出现问题时回滚

  3. 增量重构 —— 将大型重构拆分为更小的步骤,每次改动后进行测试

  4. 仔细审阅改动 —— 检查 diff 以理解改动了什么以及为什么

  5. 对复杂重构使用 Plan Mode —— 在执行前审阅方案以发现潜在问题

示例:安全重构请求

Refactor the calculateOrderTotal function to use a more maintainable structure, but ensure it produces identical results for all input cases

Verdent 将:

  • 分析当前实现和边界情况
  • 提出重构后的结构
  • 解释为何重构后的版本是等价的
  • 建议测试用例以验证等价性

当功能可能改变时:

在某些情况下,重构会有意改变行为(修复 bug、改进验证)。请明确说明这一点:

Refactor the email validation function to correctly handle international domains, which the current implementation doesn't support

这表明行为变更是预期且有意为之的。


最佳实践

描述问题,而非方案

让 Verdent 分析代码并提出最佳重构方案,而不是规定具体改动。

重构时始终使用 Plan Mode

在执行前审阅完整计划。这能避免意外,并允许你基于架构考量优化方案。

明确使用 Explorer 进行全面搜索

为彻底重构,要求 Verdent 使用 Explorer 找到所有实例:"使用 Explorer 找到所有手动错误处理,然后重构为使用我们的错误工具。"

将大型重构拆分为多个阶段

在阶段之间进行测试的多阶段方法,比一次性完成所有内容更安全、更易管理。

在阶段之间进行测试

在继续下一阶段之前验证每个阶段正常工作。这能隔离问题并防止问题累积。

频繁提交

使用版本控制在每个阶段或重大改动后创建检查点。这样可以安全回滚而不丢失全部进度。

保存计划供团队审阅

对于重要的重构,请求 Verdent 将计划保存到 plan.md,以便在执行前进行团队讨论。

为优化提供上下文

请求性能改进时,包含关于数据规模、性能约束和可接受权衡的信息。


另请参阅