DDevArchive
Đăng nhập

Code review hiệu quả: review để học, không để bắt lỗi

Code review tốt không phải "bắt được bug" — CI/CD và test làm điều đó. Review tốt là chia sẻ kiến thức, đảm bảo code dễ hiểu cho người tiếp theo, và nâng cao chất lượng toàn team.

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ôngFormat code (Prettier)
Tên biến/hàm có rõ ý nghĩa khôngImport thừa (ESLint)
Edge case có xử lý khôngType check (TypeScript)
Security: SQL injection, XSSTest pass/fail
Có test cho logic mới khôngBuild 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