#1. Dấu hiệu (Smell)
- Hàm dài trên 30-50 dòng.
- Hàm chứa quá nhiều logic: validate, gọi DB, xử lý business, format response.
- Khó đặt tên (tên hàm phải có từ “and” hoặc mô tả quá chung chung).
#2. Chiến lược refactor
- Extract Method: Chia nhỏ các khối logic con thành các hàm
privatehoặcprotectedcó tên mang tính mô tả cao. - Extract Class (Action): Nếu một đoạn logic con có thể tái sử dụng hoặc quá phức tạp, hãy di chuyển nó sang một
Action Classmới. - Tư duy: Mỗi hàm chỉ nên làm một việc duy nhất.
#3. Câu hỏi nhanh
Q: “Hàm thế nào là quá dài?” A: Không có con số chính xác. Hãy dùng quy tắc: Nếu bạn cần comment để giải thích “hàm này làm gì” ở giữa hàm, thì đó là dấu hiệu nó cần được tách thành các hàm con với tên gọi tự giải thích.
Q: Khi tách hàm, biến nào nên là tham số?
A: Chỉ truyền vào những gì hàm đó thực sự cần. Đừng bao giờ truyền cả object $request vào một hàm con nếu chỉ cần 1 trường dữ liệu. Điều này làm tăng sự phụ thuộc (Tight Coupling).