SOILD là gì ? Áp dụng các nguyên tắc soild vào trong lập trình

SOLID là viết tắt của 5 chữ cái đầu trong 5 nguyên tắc thiết kế hướng đối tượng trong lập trình, giúp cho developer viết ra những đoạn code dễ đọc, dễ hiểu, dễ bảo trì.

SOILD được đưa ra bởi Bob Martin và Michael Feathers. Trong lập trình để áp dụng đủ cả 5 nguyên tắc này không hề đơn giản. 5 nguyên tắc đó bao gồm:

  • Single responsibility principle (SRP)
  • Open/Closed principle (OCP)
  • Liskov substitution principe (LSP)
  • Interface segregation principle (ISP)
  • Dependency inversion principle (DIP) 

Trong bài viết này Stanford sẽ giới thiệu từng nguyên tắc trong 5 nguyên tắc trên cũng như cách áp dụng nó trong lập trình.

1. Single responsibility priciple

Nguyên lý đầu tiên ứng với chữ S trong SOLID, có ý nghĩa là một class chỉ nên giữ một trách nhiệm duy nhất. Một class có quá nhiều chức năng sẽ trở nên cồng kềnh và trở nên khó đọc, khó bảo trì. Tư tưởng của nguyên tắc này đó là không nên gom các hàm xử lý với nhiều chức năng khác nhau trong một lớp mà thay vào đó hãy tạo thành nhiều lớp, mỗi lớp đảm nhiệm vài trò duy nhất.

2. Open/Closed principle

Nguyên lý thứ 2 ứng với chữ O trong SOLID. Nội dung Có thể thoải mái mở rộng 1 class nhưng không được sửa đổi bên trong lớp đó (open for extension but closed for modification). Theo nguyên tắc này thì khi có nhu cầu bổ sung thông tin cho một lớp đã có người lập trình nên sử dụng kỹ thuật kế thừa để mở rộng lớp hiện tại ra.

3. Liskov substitution principle

Nguyên tắc thứ 3, ứng với chữ L trong SOLID. Nội dung nguyên tắc này được phát biểu như sau: Bất cứ instance nào của lớp cha cũng có thể được thay thế bởi instance của lớp con của nó mà không làm thay đổi tính đúng đắn của chương trình. 
Để hiểu rõ hơn về nguyên tắc này, ví dụ chúng ta tạo một lớp cha tên Vịt. Các class Vịt bầu, Vịt cỏ vân đình,... có thể kế thừa lớp này, chương trình chạy bình thường. Tuy nhiên nếu ta viết class Vịt chạy pin, cần pin mới chạy được. Khi lớp này kế thừa lớp Vịt vì không có pin không chạy được, sẽ gây lỗi. Đó là 1 trường hợp vi phạm nguyên tắc này.

4. Interface segregation principle

Nguyên tắc thứ 4 ứng với chữ I trong SOLID, nội dung nguyên tắc này như sau: Thay vì dùng 1 interface lớn, người lập trình nên tách thành nhiều interface nhỏ, với nhiều mục đích cụ thể. Các lớp không nên phụ thuộc vào interface mà nó không sử dụng. Nguyên tắc này tương đối dể hiểu đó là thay vì gộp hết lại trong 1 interface lớn, ta có thể chia nhỏ thành nhiều interface nhỏ hơn gồm các method liên quan tới nhau, như vậy sẽ dễ quản lý hơn.

5. Dependency inversion principle

Nguyên tắc thứ 5 ứng với chữ D trong SOLID, nội dung nguyên tắc này như sau: 

  • 1. Các module cấp cao không nên phụ thuộc vào các modules cấp thấp. Cả 2 nên phụ thuộc vào abstraction. 
  • 2. Abstraction không nên phụ thuộc vào chi tiết, mà ngược lại.


Để hiểu rõ về nguyên tắc này, cùng xem ví dụ sau: Như chúng ta đều biết 2 loại đèn: đèn tròn và đèn huỳnh quang. Chúng cùng có đuôi tròn, do đó ta có thể thay thế đèn tròn bằng đèn huỳnh quanh cho nhau 1 cách dễ dàng. Ở đây, interface chính là đuôi tròn, implementation là bóng đèn tròn và bóng đèn huỳnh quang. Ta có thể thay dễ dàng giữa 2 loại bóng vì ổ điện chỉ quan tâm tới interface (đuôi tròn), không quan tâm tới implementation.

Trong lập trình cũng vậy, khi áp dụng Dependency Inversion, ta chỉ cần quan tâm tới interface. Ví dụ trong dự án khi làm việc với nhiều hệ quản trị cơ sở dữ liệu như MySQL, Oracle, SQL Server. Chúng ta có thể tạo ra 1 interface chứa các hàm kết nối, đọc và ghi thông tin. Để làm việc với MySQL ta chỉ cần qua interface này qua implementation viết cho MySQL. Nếu muốn làm việc với Oracle ta sẽ thay đổi implementation cho Oracle từ interface trên là xong.

Hy vọng qua bài viết này các bạn học lập trình đã hiểu rõ phần nào về nguyên tắc SOILD áp dụng trong lập trình để giúp bạn viết code chuyên nghiệp, dễ bảo trì và sửa đổi hơn. Nếu bạn học lập trình cùng chuyên gia giỏi, giàu kinh nghiệm có thể tham khảo các khoá học của Stanford tại website: https://stanford.com.vn.

=============================
☎ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ
Hotline: 0963 723 236 - 0866 586 366
Website: https://stanford.com.vn
Facebook: http://bit.ly/2FN0TYb
Youtube: http://bit.ly/2TkKT7I

Tags: học lập trình, tìm hiểu soild, nguyên tắc soild trong lập trình, lập trình viên chuyên nghiệp, lập trình theo nguyên tắc soild