根据想法和资料撰写博客草稿。适用于用户想写博客、基于研究创建内容,或起草文章的场景。流程会引导你完成调研、头脑风暴、提纲编写和带版本控制的迭代撰写。
日本語の概要は準備中です。原文の説明を表示しています。
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.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
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
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
Trước khi bắt đầu, làm rõ:
Trình bày phát hiện cho người dùng:
"Refactoring mà không có tests giống như lái xe mà không có thắt dây an toàn." — Martin Fowler
Tests là bật dụng chính của refactoring an toàn. Không có chúng, bạn có nguy cơ giới thiệu bugs.
Kiểm tra các test hiện có
# Tìm các file test
find . -name "*test*" -o -name "*spec*" | head -20
Chạy các test hiện có
# JavaScript/TypeScript
npm test
# Python
pytest -v
# Java
mvn test
Kiểm tra phủ vùng (nếu có)
# JavaScript
npm run test:coverage
# Python
pytest --cov=.
Nếu tests tồn tại và pass:
Nếu tests bị thiếu hoặc không hoàn chỉnh: Trình bày các tùy chọn:
Nếu tests đang fail:
Đối với mỗi hàm được refactor, đảm bảo tests bao phủ:
Sử dụng chu trình "red-green-refactor":
Các triệu chứng của các vấn đề sâu hơn trong code. Chúng không phải là bugs, nhưng là các chỉ báo rằng code có thể được cải thiện.
Xem references/code-smells.md để có danh sách đầy đủ.
| Smell | Dấu Hiệu | Tác Động |
|---|---|---|
| Long Method | Methods > 30-50 dòng | Khó hiểu, test, duy trì |
| Duplicated Code | Cùng logic ở nhiều nơi | Cần sửa lỗi ở nhiều nơi |
| Large Class | Class với quá nhiều trách nhiệm | Vi phạm Single Responsibility |
| Feature Envy | Method sử dụng dữ liệu class khác nhiều | Đóng gói kém |
| Primitive Obsession | Lạm dụng primitives thay vì objects | Thiếu các khái niệm domain |
| Long Parameter List | Methods với 4+ parameters | Khó gọi đúng |
| Data Clumps | Cùng dữ liệu xuất hiện cùng nhau | Thiếu abstraction |
| Switch Statements | Switch/if-else chains phức tạp | Khó mở rộng |
| Speculative Generality | Code "trường hợp" | Độ phức tạp không cần thiết |
| Dead Code | Code không sử dụng | Nhầm lẫn, gánh nặng duy trì |
Phân Tích Tự Động (nếu scripts có sẵn)
python scripts/detect-smells.py <file>
Review Thủ Công
Ưu Tiên Tập trung vào các smells mà:
Trình bày cho người dùng:
Đối với mỗi smell, chọn một refactoring phù hợp từ catalog.
Xem references/refactoring-catalog.md để có danh sách đầy đủ.
| Code Smell | Refactoring Khuyến Nghị |
|---|---|
| Long Method | Extract Method, Replace Temp with Query |
| Duplicated Code | Extract Method, Pull Up Method, Form Template Method |
| Large Class | Extract Class, Extract Subclass |
| Feature Envy | Move Method, Move Field |
| Primitive Obsession | Replace Primitive with Object, Replace Type Code with Class |
| Long Parameter List | Introduce Parameter Object, Preserve Whole Object |
| Data Clumps | Extract Class, Introduce Parameter Object |
| Switch Statements | Replace Conditional with Polymorphism |
| Speculative Generality | Collapse Hierarchy, Inline Class, Remove Dead Code |
| Dead Code | Remove Dead Code |
Sử dụng mẫu tại templates/refactoring-plan.md.
Đối với mỗi refactoring:
QUAN TRỌNG: Introduce refactoring tăng dần theo các giai đoạn.
Giai Đoạn A: Quick Wins (Rủi ro thấp, giá trị cao)
Giai Đoạn B: Cải Tiến Cấu Trúc (Rủi ro trung bình)
Giai Đoạn C: Thay Đổi Kiến Trúc (Rủi ro cao hơn)
Trước khi triển khai:
"Thay Đổi → Test → Xanh? → Commit → Bước tiếp theo"
Đối với mỗi bước refactoring:
Kiểm tra trước
Thực hiện MỘT thay đổi nhỏ
Xác Minh
Nếu tests pass (xanh)
Nếu tests fail (đỏ)
Mỗi commit nên là:
Ví dụ thông điệp commit:
refactor: Extract calculateTotal() from processOrder()
refactor: Rename 'x' to 'customerCount' for clarity
refactor: Remove unused validateOldFormat() method
Sau mỗi sub-giai đoạn, báo cáo cho người dùng:
Chạy phân tích độ phức tạp trước và sau:
python scripts/analyze-complexity.py <file>
Trình bày cải tiến:
Trình bày kết quả cuối cùng:
Thảo luận với người dùng:
Luôn dừng lại và tham khảo người dùng khi:
Trước:
function processOrder(order) {
// 150 dòng code với:
// - Logic xác thực trùng lặp
// - Tính toán nội tuyến
// - Trách nhiệm hỗn hợp
}
Các Bước Refactoring:
Sau:
function processOrder(order) {
validateOrder(order);
const total = calculateOrderTotal(order);
notifyCustomer(order, total);
return { order, total };
}
scripts/analyze-complexity.py - Phân tích metrics độ phức tạp codescripts/detect-smells.py - Phát hiện smell tự độngまだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
根据想法和资料撰写博客草稿。适用于用户想写博客、基于研究创建内容,或起草文章的场景。流程会引导你完成调研、头脑风暴、提纲编写和带版本控制的迭代撰写。
日本語の概要は準備中です。原文の説明を表示しています。
Створення чернетки блог-посту з ідей та ресурсів. Використовуйте, коли користувачі хочуть написати блог-пост, створити контент з дослідження або підготувати статтю. Проводить через дослідження, мозковий штурм, складання плану та ітеративне написання з контролем версій.
日本語の概要は準備中です。原文の説明を表示しています。
Soạn thảo bài đăng blog từ ý tưởng và tài nguyên. Sử dụng khi người dùng muốn viết bài blog, tạo nội dung từ nghiên cứu, hoặc soạn thảo bài viết. Hướng dẫn qua nghiên cứu, động não, lập dàn ý, và soạn thảo lặp lại với kiểm soát phiên bản.
日本語の概要は準備中です。原文の説明を表示しています。
Draft a blog post from ideas and resources. Use when users want to write a blog post, create content from research, or draft articles. Guides through research, brainstorming, outlining, and iterative drafting with version control.
日本語の概要は準備中です。原文の説明を表示しています。
Đảm bảo tất cả các truyền thông phù hợp với hướng dẫn giọng điệu và phong cách thương hiệu. Sử dụng khi tạo bản sao marketing, truyền thông khách hàng, nội dung công khai, hoặc khi người dùng đề cập đến giọng điệu thương hiệu, ngữ điệu, hoặc phong cách viết.
日本語の概要は準備中です。原文の説明を表示しています。
Забезпечення відповідності всіх комунікацій голосу та тону бренду. Використовуйте при створенні маркетингових текстів, клієнтських комунікацій, публічного контенту, або коли користувачі згадують голос бренду, тон чи стиль написання.
日本語の概要は準備中です。原文の説明を表示しています。