Refactor
Refactor code có hệ thống dựa trên phương pháp luận của Martin Fowler.
Install
npx skills add luongnv89/claude-howto --skill refactor -g -a claude-code -y- Repository
- luongnv89/claude-howto46.4k
- Category
- Engineering
- Updated
- 7d ago
- License
- MIT
- Context cost
- Mediumabout 2,992 tokens
- Runs scripts
- No, instructions only
What it does
Refactor code có hệ thống dựa trên phương pháp luận của Martin Fowler. Sử dụng khi người dùng yêu cầu refactor code, cải thiện cấu trúc code, giảm nợ kỹ thuật, dọn code legacy, loại bỏ code smells, hoặc cải thiện khả năng duy trì code. Skill này hướng dẫn qua cách tiếp theo từng giai đoạn với nghiên cứu, lập kế hoạch, và triển khai tăng dần an toàn.
Code Refactoring Skill
Một cách tiếp có hệ thống để refactor code dựa trên Refactoring: Improving the Design of Existing Code (ấn bản 2) của Martin Fowler. Skill này nhấn mạnh các thay đổi tăng dần, an toàn được hỗ trợ bởi tests.
"Refactoring là quá trình thay đổi một hệ thống phần mềm theo cách mà nó không làm thay đổi hành vi bên ngoài của code nhưng cải thiện cấu trúc nội bộ của nó.", Martin Fowler
Nguyên Tắc Cốt Lõi
- Bảo Tồn Hành Vi: Hành vi bên ngoài phải không thay đổi
- Các Bước Nhỏ: Thực hiện các thay đổi nhỏ, có thể test
- Được Dẫn Bởi Test: Tests là lưới an toàn
- Liên Tục: Refactoring là liên tục, không phải sự kiện một lần
- Hợp Tác: Cần sự chấp thuận của người dùng tại mỗi giai đoạn
Tổng Quan Workflow
Giai Đoạn 1: Nghiên Cứu & Phân Tích
↓
Giai Đoạn 2: Đánh Giá Phủ Vùng Test
↓
Giai Đoạn 3: Xác Định Code Smell
↓
Giai Đoạn 4: Tạo Kế Hoạch Refactoring
↓
Giai Đoạn 5: Triển Khai Tăng Dần
↓
Giai Đoạn 6: Review & Lặp Lại
Giai Đoạn 1: Nghiên Cứu & Phân Tích
Mục Tiêu
- Hiểu cấu trúc và mục đích của codebase
- Xác định phạm vi của refactoring
- Thu thập bối cảnh về các yêu cầu kinh doanh
Câu Hỏi Đặt Cho Người Dùng
Trước khi bắt đầu, làm rõ:
- Phạm Vi: Những file/module/hàm nào cần refactor?
- Mục Tiêu: Bạn đang cố gắng giải quyết vấn đề gì? (khả đọc, hiệu suất, khả năng duy trì)
- Ràng Buộc: Có những khu vực nào KHÔNG NÊN thay đổi không?
- Áp Lực Thời Gian: Điều này có chặn công việc khác không?
- Trạng Thái Test: Tests có tồn tại không? Chúng có pass không?
Hành Động
- Đọc và hiểu code mục tiêu
- Xác định dependencies và integrations
- Tài liệu hóa kiến trúc hiện tại
- Ghi chú bất kỳ markers nợ kỹ thuật hiện có (TODOs, FIXMEs)
Đầu Ra
Trình bày phát hiện cho người dùng:
- Tóm tắt cấu trúc code
- Các khu vực vấn đề được xác định
- Khuyến nghị ban đầu
- Yêu cầu chấp thuận để tiếp tục
