# Refactor

Refactor code có hệ thống dựa trên phương pháp luận của Martin Fowler.

- Repository: https://github.com/luongnv89/claude-howto (46363 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-29
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add luongnv89/claude-howto --skill refactor -g -a claude-code -y`
Codex: `npx skills add luongnv89/claude-howto --skill refactor -g -a codex -y`
Cursor: `npx skills add luongnv89/claude-howto --skill refactor -g -a cursor -y`
Gemini CLI: `npx skills add luongnv89/claude-howto --skill refactor -g -a gemini-cli -y`

## Description

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.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 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

1. **Bảo Tồn Hành Vi**: Hành vi bên ngoài phải không thay đổi
2. **Các Bước Nhỏ**: Thực hiện các thay đổi nhỏ, có thể test
3. **Được Dẫn Bởi Test**: Tests là lưới an toàn
4. **Liên Tục**: Refactoring là liên tục, không phải sự kiện một lần
5. **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õ:

1. **Phạm Vi**: Những file/module/hàm nào cần refactor?
2. **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ì)
3. **Ràng Buộc**: Có những khu vực nào KHÔNG NÊN thay đổi không?
4. **Áp Lực Thời Gian**: Điều này có chặn công việc khác không?
5. **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**

---

The rest: https://github.com/luongnv89/claude-howto/blob/HEAD/vi/03-skills/refactor/SKILL.md
