TROISINH
Sử dụng thực chiếnSlash Commands & Workflow hàng ngày

Refactor hàng nghìn dòng code chỉ trong giờ đồng hồ với Claude Code

Tái cấu trúc codebase hàng nghìn dòng trong vài giờ với /batch và /simplify. Kỹ thuật dùng Claude Code để refactor React, TypeScript, legacy code mà không làm broken production.

Định nghĩa

Refactoring với Claude Code là quy trình tái cấu trúc codebase để cải thiện maintainability, performance và readability mà không thay đổi behavior bên ngoài — được thực hiện thông qua parallel subagents trong isolated git worktrees và automated verification loops thay vì edit thủ công từng file.

Giải thích chi tiết

Từ "Big Bang" sang "Strangler Fig": Chiến lược refactor hiện đại

Ngày xưa, refactor là nỗi khiếp sợ của dev team — phải đóng băng feature development cả tuần để "dọn dẹp" code, với nguy cơ cao là break production vì miss một edge case trong logic cũ. Claude Code áp dụng Strangler Fig Pattern (lấy tên từ cây vả choán ngôi cây chủ): thay vì rewrite toàn bộ, bạn tách từng "vertical slice" (tính năng nhỏ) ra khỏi legacy, refactor trong isolation, rồi route traffic dần sang implementation mới.

Điểm mấu chốt là context isolation. Khi refactor một module phức tạp, Claude spawn subagent chuyên biệt — một agent chỉ đọc hiểu legacy code (không được phép edit), một agent viết implementation mới, và một agent viết differential tests để verify behavioral parity. Mỗi agent chạy trong context window riêng, tránh hiện tượng "cognitive thrashing" — khi cùng một đầu phải vừa hiểu code cũ vừa viết code mới, dẫn đến confusion và bug.

Parallel Refactoring với Git Worktrees và /batch

Lệnh /batch (một trong 5 bundled skills) biến refactoring từ tuần tự sang song song. Khi bạn cần migrate 20 React class components sang Hooks:

  1. Claude decompose task thành 20 independent units
  2. Tạo 20 git worktrees (directories làm việc riêng biệt, share cùng git history nhưng có working tree riêng)
  3. Spawn subagent cho mỗi component trong worktree riêng — chúng chạy song song thực sự (true parallelism) vì không share mutable state
  4. Mỗi agent chỉ return kết quả cuối cùng (diff), loại bỏ intermediate "thinking" khỏi context chính

Cơ chế này giải quyết "context window pollution" — khi refactor file thứ 20, agent vẫn nhớ rõ requirements từ file thứ 1 vì chúng không bị lấp đầy bởi trial-and-error logs của 19 file trước đó.

Automated Code Quality với /simplify và Multi-Agent Review

Sau khi refactor, /simplify skill tự động spawn 3 parallel review agents với lenses khác nhau:

  • Reuse Agent: Tìm duplicate logic có thể extract thành shared utilities
  • Quality Agent: Kiểm tra error handling, edge cases, type safety
  • Efficiency Agent: Phân tích performance patterns (unnecessary re-renders, N+1 queries)

Ba agents này hoạt động như "senior dev team" ảo — họ không bị confirmation bias (hiện tượng "tác giả không thấy lỗi của chính mình") vì mỗi agent có context window riêng, nhìn code với con mắt "fresh eyes". Kết quả là non-breaking simplifications được apply tự động, trong khi breaking changes được flag để human review.

Safety Net: Checkpoints, Permissions và Rollback

Claude Code coi refactoring như database transaction — phải có atomicityrollback capability. Trước khi bắt đầu refactor lớn, bạn dùng /checkpoint để snapshot toàn bộ trạng thái. Nếu refactor đi sai hướng (ví dụ: tests fail sau 50 file edits), /rewind đưa codebase về trạng thái trước đó trong vài giây, không để lại "code zombie" nửa vời.

Permission modes (`plan`, `acceptEdits`, `auto`) cho phép bạn chọn mức độ giám sát:

  • Plan mode: Claude chỉ tạo implementation roadmap, bạn review kiến trúc trước khi chạm vào file nào
  • AcceptEdits: Claude propose từng batch changes, bạn approve từng phần
  • Auto mode (Research Preview): Safety classifier tự động approve non-breaking changes nhưng block destructive operations

Ví dụ thực tế

Migrate jQuery mess sang React Hooks trong 2 giờ

Bạn đang maintain legacy frontend của một sàn thương mại điện tử (kiểu Shopee/Lazada cũ) với 20 file jQuery spaghetti code cần chuyển sang React Hooks hiện đại. Thay vì ngồi sửa từng file một:

/batch convert-jquery-to-react src/legacy-components/

Claude tự động:

  • Tạo 20 worktrees tương ứng 20 components
  • Mỗi subagent phân tích event listeners và DOM manipulation của file đó, map sang useEffect/useState/useCallback tương đương
  • Chạy integration tests sau mỗi conversion để đảm bảo behavior không đổi (ví dụ: giỏ hàng vẫn cập nhật đúng khi thêm sản phẩm)
  • Merge tất cả changes vào main working tree qua git apply

Kết quả: 20 components refactored song song trong 2 giờ (thay vì 2 tuần tuần tự), với differential tests verify behavioral parity.

Tách Microservice VietQR từ Laravel Monolith

Bạn muốn tách module "Thanh toán VietQR" ra khỏi Laravel monolith sang Go microservice để xử lý 10,000 TPS trong đợt sale lớn:

  1. Planning Subagent: Phân tích dependencies của VietQR module, xác định Anti-Corruption Layer cần thiết để translate giữa Laravel Eloquent models và Go structs
  2. Implementation Subagent (chạy trong worktree riêng): Viết Go service với gRPC interface, cùng với "shadow mode" — code chạy song song nhưng không serve traffic thật
  3. Verification Subagent: So sánh outputs giữa Laravel cũ và Go mới trên 1000 giao dịch thật, flag bất kỳ mismatch nào (số tiền, nội dung chuyển khoản)
  4. Migration: Dùng feature flag để route 1% traffic sang Go service, tăng dần khi confidence cao

Optimize TypeScript sau migration từ JavaScript

Startup fintech của bạn vừa migrate từ JavaScript sang TypeScript nhưng codebase bị "bloat" bởi any types và duplicate interfaces. Dùng /simplify:

  • Agent 1: Tìm và merge duplicate type definitions (UserDTO xuất hiện 5 nơi với tên khác nhau: IUser, UserType, UserInterface)
  • Agent 2: Remove unused imports và dead code từ quá trình migration
  • Agent 3: Convert any types thành strict types dựa trên actual usage patterns (ví dụ: từ any sang VietQRTransaction | null)

Kết quả: -30% lines of code, +type safety, hoàn thành trong 45 phút thay vì 2 ngày manual cleanup.

Ứng dụng

Senior Engineers & Tech Leads tại các công ty outsourcing (FPT, TMA, KMS) hoặc startup (Grab, Loship): Dùng Claude Code để thực hiện architectural refactoring (microservices extraction, database migration) với confidence cao nhờ automated verification và rollback capability. Không còn cần "freeze development" để refactor.

Junior Developers tại các agency: Học best practices thông qua việc xem Claude refactor code — cách tách concerns, đặt tên biến, structure error handling. Refactoring trở thành "mentoring session" thay vì chore đáng sợ.

Freelancers nhận dự án chuyển đổi legacy: Chuyển đổi codebase cũ cho khách hàng (ví dụ: jQuery sang React, PHP sang Node.js) với tốc độ nhanh gấp 5-10 lần, nhờ parallel processing và reusable skills qua CLAUDE.md. Giao hàng nhanh, lấy uy tín.

Enterprise Teams tại ngân hàng (Techcombank, VPBank) hoặc fintech (MoMo, ZaloPay): Standardize refactoring patterns toàn công ty — định nghĩa "cách chúng ta refactor React" trong shared CLAUDE.md, đảm bảo mọi developer tuân thủ cùng architectural standards khi dùng /simplify.

So sánh

Tiêu chíRefactoring thủ côngIDE Refactoring (JetBrains/VS Code)Claude Code
Phạm viSingle file, limitedCross-file nhưng cần manualMulti-file, multi-phase tự động
Kiểm tra an toànManual testingSyntax check onlyAutomated tests + differential verification
Tốc độTuần cho codebase lớnGiờ cho simple renamesGiờ cho complex architectural changes
Knowledge persistenceTribal knowledgeKhông lưu trữCLAUDE.md lưu patterns và standards
Parallel processingKhông thểKhông thểSong song 5-30 work units với /batch
Xử lý legacyCần hiểu sâu codebaseThất bại với code phức tạpSubagents phân tích và migrate từng phần

Kết luận: Trong khi IDE tools phù hợp cho "rename variable" hoặc "extract method" đơn giản, Claude Code excel ở large-scale architectural refactoring — những thay đổi ảnh hưởng 50+ files, đòi hỏi hiểu biết về cross-module dependencies và cần maintain behavioral parity.

Bài viết liên quan

Cùng cụm (daily-workflow)

Đọc tiếp

On this page