1. Giới thiệu
– Như đã giới thiệu ở bài viết trước, viết code cũng cần tuân theo những nguyên tắc nhất đinh. Nếu việc viết code tùy ý thì việc xem source code của dev khác, quản lý source code hay xử lý lỗi sẽ cực kỳ khó khăn. Do đó mà những lập trình viên chuyên nghiệp đều có tuân theo những quy tắc lập trình chung.
– Chúng ta đã tìm hiểu qua 3 trong số 10 nguyên tắc lập trình cơ bản mà mọi lập trình viên cần biết. Ở bài viết này, chúng ta hãy tìm hiểu tiếp 5 trong số 7 những nguyên tắc còn lại. 5 nguyên tắc đó được gói gọn trong 1 chữ: “SOLID” –
2. S -SRP (Single Responsibility Principle)
– Nguyên tắc của phương pháp này là mỗi class, function hay module chỉ có một lý do để thay đổi, tức một trách nhiệm duy nhất.
– Mục tiêu của nguyên tắc này nhằm hướng đến việc:
- Khi viết code cho class hoặc function dành riêng cho một chức năng, việc hiểu, duy trì và sửa source code của bạn trở nên dễ dàng hơn.
- Nếu muốn sửa đổi tính năng của hệ thống, ta biết chính xác vị trí nơi cần phải sửa code.

– Source code sắp xếp hợp lý và dễ đọc hơn. Đồng thời việc tái sử dụng code cũng dễ dàng hơn.
3. O – OCP (Open Closed Principle)
– Nguyên tắc của phương pháp là functions, classes, modules phải dễ dàng mở rộng nhưng không được phép sửa đổi.
– Trong quá trình phát triển phần mềm, ta sẽ xây dựng những tính năng, test chúng và giao cho khách hàng. Sau đó team sẽ tiếp tục chuyển qua phát triển những tính năng mới. Mặt khác, khi code những tính năng mới, chúng ta sẽ ít muốn phải đụng lại những tính năng cũ. Việc thay đổi những code cũ- đã tested và deployed- sẽ dễ khiến tính năng đó hư theo. Do đó, mục tiêu của nguyên tắc này là cố gắng thêm chức năng mới dựa trên những chức năng hiện có.


– Khi muốn thêm 1 function mới (Diện tính Hình vuông), ta chỉ cần thêm bên dưới những hàm có sẵn.
4. L – LSP (Liskov Substitution Principle)
– Nguyên tắc của phương pháp là tất cả các class con phải có thể thay thế cho các class cha của chúng mà không ảnh hưởng hoặc phá vỡ tính đúng đắn của chương trình.
– Trong lập trình OOP, ta thường gọi mối quan hệ kế thừa(Inheritance) là 1 mối quan hệ “IS- A”. Đại bàng ‘là một’ con chim, nên đại bàng sẽ kế thừa class chim, v.v… Tuy nhiên trong thực tế cũng sẽ có một số trường hợp mà ta không thể áp trực tiếp vào trong code, ví dụ:

– Trong thực tế, đại bàng và vịt trời và cánh cụt là chim nên đáp ứng được quan hệ “IS-A” . Cánh cụt không thể bay nên khi gọi phương thức Fly() của class Bird, chương trình sẽ quăng ra Exception.
5. I – ISP (Interface Segregation Principle)
- Nội dung của nguyên lý này là: 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ể.

