Single Responsibility Principle (SRP) là gì và tại sao nó quan trọng?

SRP quy định mỗi class/module chỉ nên có một lý do để thay đổi, tức là chỉ chịu trách nhiệm cho một chức năng duy nhất.

Ví dụ trong TypeScript:

typescript
// Vi phạm SRP — 1 class làm 3 việc
class UserService {
  handleLogin() { /* ... */ }
  log(msg: string) { /* ... */ }
  sendEmail() { /* ... */ }
}
// Đúng SRP — tách riêng
class UserService { handleLogin() { /* ... */ } }
class Logger { log(msg: string) { /* ... */ } }
class EmailService { sendEmail() { /* ... */ } }

Lợi ích: code dễ test, dễ maintain.

Dấu hiệu vi phạm: class có nhiều method không liên quan nhau hoặc file dài hàng nghìn dòng.

Xem toàn bộ Design Patterns cùng filter theo level & chủ đề con.

Mở danh sách Design Patterns