SOLID Principal

September 8, 2025

S.O.L.I.D là tập hợp 5 nguyên tắc thiết kế hướng đối tượng (Object-Oriented Design Principles) được Robert C. Martin (Uncle Bob) đề xuất, nhằm giúp code dễ hiểu, dễ bảo trì, dễ mở rộng và hạn chế phụ thuộc lẫn nhau.


S – Single Responsibility Principle 

Một class chỉ nên có một lý do duy nhất để thay đổi.

  • Nghĩa là: Mỗi class nên chỉ tập trung xử lý một nhiệm vụ cụ thể.
  • Nếu một class đảm nhận nhiều trách nhiệm, nó sẽ khó mở rộng và dễ gây bug khi thay đổi.

Wrong

class Report {
    public function generate() { /* logic tạo báo cáo */ }
    public function saveToFile() { /* logic lưu ra file */ }
}

Right

class ReportGenerator { public function generate() {} }
class ReportSaver { public function saveToFile($report) {} }

Lợi ích của việc sủ dụng SRP

  1. Dễ bảo trì: Thay đổi logic của một phần sẽ không ảnh hưởng đến phần khác.
  2. Dễ mở rộng: Có thể thêm chức năng mới bằng cách thêm class/service mới.
  3. Dễ test: Unit test từng phần riêng biệt, không phải test cả “mớ hỗn hợp”.
  4. Giảm coupling: Class không phụ thuộc chặt chẽ vào quá nhiều thứ.

Tuy nhiên cũng có bất cập

  1. Quá nhiều class: Nếu lạm dụng, hệ thống sẽ có quá nhiều file/class nhỏ, khó quản lý.
  2. Phân tách không khéo: Nếu chia quá vụn hoặc chia sai trách nhiệm, sẽ gây rối hơn là gọn.
  3. Tốn effort ban đầu: Cần thời gian phân tích rõ “một trách nhiệm là gì”.
    • Ví dụ: Class User có nên vừa quản lý thông tin profile, vừa quản lý authentication không?
    • Tùy vào context để tách thành UserProfile và AuthService.
Pages: 1 2 3 4 5 6