Review cái gì? (Và không review cái gì)
| Nên review | Để máy làm (CI/CD) |
|---|---|
| Logic nghiệp vụ có đúng không | Format code (Prettier) |
| Tên biến/hàm có rõ ý nghĩa không | Import thừa (ESLint) |
| Edge case có xử lý không | Type check (TypeScript) |
| Security: SQL injection, XSS | Test pass/fail |
| Có test cho logic mới không | Build thành công |
Viết comment review đúng cách
Comment phải actionable và respectful. Tránh: “Code này sai” (không nói sai gì). Nên: “Hàm này có thể throw khi input null — thêm guard clause nhé?” hoặc “Nit: đổi tên data thành userList để rõ ý hơn”.
// File: review-examples.md
## Prefixes phổ biến trong comment review:
**[Blocker]** — Phải sửa trước khi merge:
"SQL concatenation ở đây mở cửa cho injection. Dùng parameterized query."
**[Suggestion]** — Nên sửa nhưng không bắt buộc:
"Có thể dùng Promise.all thay for-await để chạy song song. Nhanh hơn ~3x."
**[Nit]** — Nhỏ, cosmetic:
"Đổi biến `d` thành `dueDate` cho rõ nghĩa hơn."
**[Question]** — Hỏi để hiểu, không phải phê bình:
"Vì sao chọn Map thay vì Object ở đây? Có lý do về performance không?"
Nhận review: đừng defensive
Code không phải bạn. Comment review nhắm vào code, không nhắm vào con người. Cảm ơn feedback hữu ích, hỏi lại nếu chưa hiểu, và nhớ rằng reviewer dành thời gian đọc code của bạn — đó là sự đầu tư.
❓ Comment review nào hiệu quả nhất?
- Phân biệt việc reviewer làm vs CI/CD làm
- Dùng prefix [Blocker], [Suggestion], [Nit]
- Viết comment actionable và respectful
- Nhận review không defensive