Nguyên lý SOLID trong lập trình


Đây là một nguyên lý rất nổi tiếng và cơ bản trong lập trình.
Khi áp dụng các nguyên lý này thì code được viết sẽ sáng sủa và rõ ràng hơn, dễ bảo trì sửa chữa cũng như thêm mới mở rộng tính năng hơn.



Nguyên lý này tập hợp gồm 5 nguyên lý nhỏ bên trong

1. S  - Single responsibility principle
Một class chỉ nên giữ 1 trách nhiệm duy nhất (Chỉ có thể sửa đổi class với 1 lý do duy nhất)

2. O - Open/closed principle
Có thể thoải mái mở rộng 1 class, nhưng không được sửa đổi bên trong class đó

3. L - Liskov substitution principle
Trong một chương trình, các object của class con có thể thay thế class cha mà không làm thay đổi tính đúng đắn của chương trình

4. I - Interface segregation principle
Thay vì dùng 1 interface lớn, ta nên tách thành nhiều interface nhỏ, với nhiều mục đích cụ thể

5. D - Dependency inversion principle

  • 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.
  • Interface (abstraction) không nên phụ thuộc vào chi tiết, mà ngược lại.( Các class giao tiếp với nhau thông qua interface, không phải thông qua implementation.)


Để có thể hiểu được chi tết từng nguyên lý, bạn nhấn vào các link các bài viết chi tiết.

Chú ý :

Các nguyên lý này chỉ là hướng dẫn, giúp cho code của bạn tốt hơn, sạch hơn, dễ bảo trì hơn. Tuy nhiên, “không có bữa ăn trưa nào miễn phí”. Áp dụng các nguyên lý này vào code có thể giúp bạn cải thiện được chất lượng code, nhưng cũng có thể làm nó rườm rà, dài hơn, khó quản lý hơn.

Để thành một developer giỏi, ta nên biết các nguyên lý SOLID, các design patterns. Tuy nhiên, không phải cứ cứng nhắc áp dụng nhiều nguyên lý và design pattern vào code thì code sẽ tốt hơn. Một người developer giỏi sẽ hiểu rõ những trade-off của chúng và chỉ áp dụng một cách hợp lý để giải quyết vấn đề. Hãy nhớ, trong design, tất cả đều là đánh đổi nhé.

Không có giải pháp nào là hoàn hảo cho việc giải quyết mọi vấn đề!

Tiếp tục cập nhật ...