#1. Dấu hiệu cần làm
- Class của bạn có hơn 300 dòng code.
- Class có tên chung chung:
OrderManager,AppService,Processor. - Bạn thấy mình phải sửa file này trong hầu hết mọi ticket (Shotgun Surgery).
#2. Quy trình
- Tạo class mới với tên cụ thể (ví dụ:
InvoiceCalculator). - Di chuyển các hàm/biến liên quan sang.
- Cập nhật constructor để inject class mới vào class cũ.
#3. Bài học xương máu
- Đừng tách quá nhỏ: Nếu 2 class luôn luôn đi đôi với nhau, có thể chúng không cần tách.
- Tách bằng logic: Tách theo “lý do thay đổi”. (VD: Logic gửi mail thay đổi thường xuyên -> Tách
EmailService).
#4. Phỏng vấn
Q: Làm sao để tách Class mà không làm hỏng code hiện tại? A: Dùng Unit Test. Bao phủ toàn bộ hành vi của class cũ bằng test. Sau đó tách class, nếu test vẫn Pass, bạn an toàn.