- Nguyên lí SOLID là gì ? Để trở thành 1 developer giỏi thì phải thành thục nguyên lí này
- Single Responsibility Principle – Nguyên lí đơn trách nhiệm
- Open/Closed Principle – Nguyên lí đóng mở thế giới
- Liskov Substitution principle – Nguyên lí thay thế Liskow
- Interface Segregation Principle – Nguyên lí phân biệt interface
- Dependency inversion principle – Nguyên lí nghịch đảo phụ thuộc
Nguyên lí SOLID là gì ?
SOLID là cụm từ viết tắt của 5 nguyên lí giúp bạn thiết kế code dễ đọc hơn, dễ hiểu hơn, linh hoạt và dễ bảo trì.
Bạn đã bảo giờ khi vừa code xong thì “chỉ có tôi và chúa hiểu” và 9 tháng 10 ngày sau bạn đọc lại code của chính mình thì “chỉ có chủa mới hiểu”. Nguyên nhân là do dòng code của bạn quá rối rắm và không theo 1 nguyên lí gì cả.
Nếu bạn áp dụng được nguyên lí SOLID này thì mình đảm bảo bạn đã cảm thấy mình lên 1 tầm cao mới đấy. Vào cụ thể thôi, SOLID bao gồm 5 nguyên lí nhỏ mà mình nghĩ bất kỳ developer nào cũng cần nắm vững:
Thứ nhất: Single Responsibility Principle (S.R.P – nguyên lí đơn trách nhiệm): a class should have only a single responsibility. Mình giải thích nôm na là 1 class chỉ chịu một trách nhiệm/nhiệm vụ duy nhất.
Thứ 2: Open/Closed Principle (O.P.P – nguyên lí đóng mở): software entities … should be open for extension, but closed for modification. Một class, moldule, function… chỉ được phép mở rộng chứ không được sửa xóa
Thứ 3: Liskov Substitution principle (L.S.P – Nguyên lí thay thế Liskow): objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program. Các đối tượng trong một chương trình có thể được thay thế bởi các class con mà không làm thay đổi tính đúng đắn của chương trình. Có vẻ hơi khó hiểu một tí nhưng bạn chịu khó đọc hết series này để hiểu thêm nhé..
Thứ 4: Interface Segregation Principle (I.S.P – Nguyên lí phân biệt Interface): many client-specific interfaces are better than one general-purpose interface. Không nên sử dụng một interface lớn cho một mục đích chung, nên tách ra thành nhiều interface nhỏ với những mục đích cụ thể.
Cuối cùng: Dependency Inversion Principle (D.I.P – Nguyên lí nghịch đảo phụ thuộc): one should “depend upon abstractions, [not] concretions.”.
– High–level modules should not depend on low-level modules. Both should depend on abstraction . Modules cấp cao không nên phụ thuộc vào các modunles cấp thấp, cả hai nên phụ thuộc vào abstraction.
– Abstractions should not depend on details. Details should depend on abstractions. Abstraction không nên phụ thuộc vào các chi tiết mà phải ngược lại, chi tiết nên phụ thuộc vào abstraction
WTF cái gì thế này, có thể bạn khá hoảng loạn phải không vì đây đang là các khái niệm, mà khái niệm thì trìu tượng phải không nào. Ở các bài viết tiếp theo mình sẽ làm rõ các nguyên lí nhé, phần này chỉ dừng lại ở giới thiệu thôi nên các bạn cố gắng đọc các bài viết tiếp ở bên dưới nhé.