Bài 9 - Nguyên tắc lập trình KISS

Công việc hàng ngày của một lập trình viên luôn tiếp xúc với các dòng mã lệnh hay còn gọi là các dòng code. Vì những dòng code thường viết dưới dạng các từ khóa (keyword) ngắn gọn nên để đọc hiểu nhanh được các dòng code thì lập trình viên thường áp dụng 1 nguyên tắc KISS (Keep It Simple Stupid) khiến những dòng code của mình viết ra dễ hiểu hơn, từ đó dễ nâng cấp và bảo trì sau này. Vậy nguyên tắc KISS được áp dụng như thế nào, mời bạn cùng đọc bài viết này nhé!

 Keep It Simple Stupid dịch tạm là “giữ cho mọi thứ đơn giản đi ngốc ạ”, 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 một. Bạn viết code, người khác vừa đọc đã hiểu bạn đang viết cái gì, code của bạn thực hiện cái gì thì bạn đang áp dụng thành công rồi đấy.

Ta sẽ bắt đầu bằng câu chuyện vui sau: Chuyện kể rằng có 1 lập trình viên nọ có 1 đứa cháu nhờ chú viết ra 1 chương trình nhỏ tính chu vi của đường tròn theo công thức: Chu vi hình tròn = Số Pi x Đường kính hình tròn để nộp bài tập về nhà. Số Pi được được định nghĩa là tỉ số giữa chu vi của đường tròn C với đường kính của nó d và cô giáo cho phép lấy giá trị Pi là 3.14.

Công thức tính chu vi hình tròn

Với chú thì nhiệm vụ này quá đơn giản. Sau 1 hồi thì chú đã viết ra 1 chương trình máy tính cho đứa cháu thân yêu nhưng chú quên không khai báo 1 hằng số Pi với giá trị 3.14. Và sau này đứa cháu này "vọc" chương trình và sử dụng giá tri 3.14 ở nhiều chỗ khác nhau. Đột nhiên cô giáo bảo là để chính xác hơn tính chu vi thì ta sẽ đổi giá trị 3.14 thành 3.14159. Lúc này đứa cháu mếu máo than với chú vì nó sử dụng khắp mọi nơi và dò lại sửa quả là cơn ác mộng, thế là chú viết ngay 1 lệnh khai báo hằng rồi bảo nó copy ở các nơi khác:

defined("pi","3.14"); //chỉ cần sửa 1 lần là thay đổi cả chương trình

Như vậy thông qua câu chuyện vui trên thì ta rút ra bài học kinh nghiệm là các giá trị cố định thì cần khai báo hằng cho nó (thực tế thường lưu riêng vào 1 file config) để khi có thay đổi giá trị thì chỉ cần thay đổi 1 nơi tất cả chương trình sẽ thay đổi theo, tuân theo nguyên tắc KISS (giữ mọi thứ đơn giản).

Ngoài ra thì nguyên tắc KISS còn áp dụng trong việc đặt tên biến, file, hàm... Việc đặt tên tuy là công việc đơn giản nhưng nó giúp bạn tăng hiệu suất rất nhiều trong công việc lập trình. Quy tắc đặt tên mà bạn cần nhớ: Đặt tên sao cho nhìn cái biết ngay nó dùng để làm gì. Trường hợp các nghiệp vụ phức tạp cần viết tài liệu thì bạn đừng quên sử dụng comment để lưu ý nó lại, để sau này còn đọc lại biết code mình làm việc như thế nào.

Tiếp theo, nguyên tắc KISS áp dụng trong việc chia tách các chức năng lớn thành chức năng nhỏ hơn đảm bảo sự rõ ràng, đơn giản, nhất là trong việc viết hàm. Ví dụ sếp giao cho bạn viết 1 hàm xử lý 2 số bao gồm các thao tác cộng trừ nhân chia. Với bạn thích viết ngắn gọn thì bạn sẽ viết như này:

function xu_ly_2_so($so_1,$so_2,$kieu_thao_tac){
  $ket_qua=0;
  switch ($kieu_thao_tac) {
    case "cong":
        $ket_qua=$so_1+$so_2;
        break;
    case "tru":
        $ket_qua=$so_1-$so_2;
        break;
    case "nhan":
       $ket_qua=$so_1*$so_2;
        break;
    case "chia":
      if($so_2!=0){
       $ket_qua=$so_1/$so_2;
      }
       break;
   }
   return $ket_qua;
}
//Lời gọi hàm:
echo xu_ly_2_so(1,2,"cong"); //kết quả ra 3

Tuy nhiên nếu áp dụng nguyên tắc KISS thì hàm trên sẽ được tách riêng thành 4 hàm riêng lẻ: ham_cong, ham_tru, ham_nhan, ham_chia

function ham_cong($so_1,$so_2){
  return $so_1+$so_2;
}
function ham_tru($so_1,$so_2){
  return $so_1-$so_2;
}
function ham_nhan($so_1,$so_2){
  return $so_1*$so_2;
}
function ham_chia($so_1,$so_2){
  if($so_2!=0)
    return $so_1/$so_2;
}
//Lời gọi hàm:
echo ham_cong(1,2,"cong"); //kết quả ra 3

Như vậy bằng cách tách thành các hàm nhỏ hơn, mỗi hàm chỉ có duy nhất 1 chức năng thì chương trình trở nên rõ ràng, dễ đọc hơn nhiều, và quan trọng là sửa 1 hàm thì sẽ không ảnh hưởng đến các hàm khác

Kết luận:

Như vậy thông qua bài viết này thì bạn đã hòm hòm hiểu được nguyên tắc lập trình KISS phải không. Việc áp dụng nguyên tắc KISS trong lập trình sẽ giúp bạn:
- Các vấn đề được giải quyết nhanh hơn, tránh được các issue phức tạp
- Code dễ sử dụng, dễ test
- Bản thân code đã chính là tài liệu, comment cho chính nó
- Dễ dàng bảo trì, sửa lại code khi cần: chỉ cần sửa 1 nơi chương trình tự update theo

Tác giả: Admin