Verdent Docs
任務型指南

改善與重構程式碼

使用 Verdent 進行程式碼改善與重構的最佳實踐

Verdent for VS Code 協助你在多個檔案間安全地重構與改善程式碼,同時保留原有功能。透過搭配 Explorer 子代理的 Plan Mode,你可以在進行任何變更前找出所有受影響的檔案,確保重構全面而不遺漏任何實例。

你將學到什麼

  • 提出聚焦於成果而非實作方式的有效重構請求
  • 透過依賴管理在多個檔案間安全重構
  • 請求程式碼品質改善與最佳化建議
  • 以多階段方式處理大規模重構專案
  • 透過演算法與架構改善來最佳化效能
  • 在重構操作期間保留程式碼功能

先決條件

在使用 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 查詢、缺少索引、低效的 join
  • 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 將會:

  • 分析當前實作與邊界情況
  • 提出重構後的結構
  • 解釋為何重構後的版本是等效的
  • 建議測試案例以驗證等效性

何時功能可能會改變:

在某些情況下,重構會刻意改變行為(修正錯誤、改善驗證)。請明確說明這一點:

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,以便在執行前進行團隊討論。

為最佳化提供脈絡

請求效能改善時,請納入資料量、效能限制與可接受取捨的相關資訊。


另請參閱