Các nguyên tắc SOLID, YAGNI, KISS, DRY trong lập trình

Nguyên tắc được đúc kết từ những kinh nghiệm đã được kiểm nghiệm bằng xương và máu. Vì thế, để công việc của bạn trở nên dễ dàng hơn. Hãy áp dụng nguyên tắc.

Nguyên tắc SOLID:

Nội dung: 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)

Class này giữ tới 3 trách nhiệm: Đọc dữ liệu từ DB, xử lý dữ liệu, in kết quả. Do đó, chỉ cần ta thay đổi DB, thay đổi cách xuất kết quả, … ta sẽ phải sửa đổi class này. Càng về sau class sẽ càng phình to ra.

Nguyên tắc KISS

KISS = Keep It Simple Stupid

KISS có nhiều biến thể khác nhau như “Keep It Short and Simple”, “Keep It Simple and Straightforward” và “Keep It Small and Simple”.

Tóm lại, hàm ý của nó vẫn hướng về một sự đơn giản và rõ ràng trong mọi vấn đề. Và như vậy, sự đơn giản là mục đích trọng tâm trong thiết kế, còn những cái phức tạp không cần thiết thì nên tránh.

Trong lập trình, KISS nghĩa là hãy làm cho mọi thứ (mã lệnh của bạn) trở nên đơn giản và dễ nhìn hơn. Hãy chia nhỏ vấn đề và giải quyết từng cái. Hãy để số lượng dòng code của một lớp hay phương thức ở con số hàng chục thôi.

Đừng viết những lớp hay phương thức theo kiểu tổng hợp hay lẫn lộn (tất cả trong một), hãy để mọi thứ thật đơn giản để bạn luôn có thể hiểu được, và kết hợp chúng với nhau để giải quyết được các bài toán lớn.

Nguyên tắc DRY:

DRY = Don’t Repeat Yourself

Nguyên tắc này có nghĩa là đừng có viết lặp bất kỳ lại một đoạn mã nào mà hãy đóng gói nó thành phương thức riêng. Đến khi cần thì chỉ cần gọi tên nó ra.

Nguyên tắc này nó giống như tính chất kế thừa trong lập trình hướng đối tượng OOP mà chúng ta đã quá quen thuộc rồi.

Trên đây là một số nguyên tắc nổi tiếng trong lập trình mình muốn chia sẻ với các bạn. Phần SOLID có lẽ sẽ hơi khó hiểu nếu bạn lần đầu nghe đến, nhưng dần dần, khi áp vào vấn đề thực tế các bạn sẽ hiểu ngay thôi.

1 thought on “Các nguyên tắc SOLID, YAGNI, KISS, DRY trong lập trình”

Leave a Comment

Your email address will not be published. Required fields are marked *