Clean code là gì? 80% sử dụng phương pháp này thay cho switch.

Nội dung bài viết

Video học lập trình mỗi ngày

Switch case trong Javascript được tô vẽ nhiều trong những khoá học hay còn trong nhà trường. Nhưng ở thực tế rất ít khi chúng được sử dụng ở những lập trình viên có nhiều năm kinh nghiệm. Không phải vì nó không hay mà chính là vì họ đã sẵn sàng thay thế việc sử dụng Switch với một giải pháp khác, hay hơn, gọn hơn và dễ đọc hơn.

Bài viết thuộc về Series - Mẹo viết code javascript

Clean code là gì

Clean code hay còn gọi theo tiếng việt đó chính là mã sạch. Bạn đã nghe nhiều bài báo nói về cách viết mã đơn giản dễ đọc và dễ học. Vì lợi ích của nó rất nhiều ví dụ như để bảo trì code, fix bug javascript nhanh và quan trọng là người đến sau không mất thời gian nhiều để tiếp cận với dự án. Đúng, tôi cũng là một trong những người ủng hộ việc viết code sạch. Nhưng gần đây tôi có đọc một bài báo nói về chủ đề này, đó là việc viết code sạch chỉ được thực hiện cho những bài demo của những sinh viên. Nó gây tranh cãi... Dừng ở đây. Tôi có một số lời khuyên cho bạn nếu bạn là người ưa viết code sạch. Clean code là gì?


Clean code thể hiện qua 6 tiêu chí

Đầu tiên chúng ta hãy hiểu một số lợi ích của việc viết mã sạch (Clean code). Một trong những lợi ích chính là mã sạch có thể giảm thời gian dành cho việc đọc và hiểu mã. Mã lộn xộn sẽ làm chậm bất kỳ nhà phát triển nào và làm cho công việc của nhà phát triển trở nên khó khăn hơn. Mã càng khó hiểu, các nhà phát triển càng mất nhiều thời gian để hiểu đầy đủ về nó để họ có thể sử dụng mã. Hơn nữa, nếu mã quá lộn xộn, nhà phát triển có thể quyết định ngừng đọc mã và viết nó từ đầu. Và tôi ghi ra 6 đạc điểm cho việc viết code sạch, tham khảo và áp dụng hay không tuỳ bạn.

  • Viết mã có thể đọc được
  • Sử dụng tên có ý nghĩa cho các biến, hàm và phương thức
  • Cho phép mỗi chức năng hoặc phương pháp chỉ thực hiện một tác vụ
  • Sử dụng comment để giải thích mã, đương nhiên là ít thôi.
  • Duy trì tính nhất quán của kiểu mã
  • Kiểm tra mã của bạn thường xuyên thông qua việc cập nhật công nghệ

Giờ chúng ta đi vào một ví dụ, xem nó liên quan đến việc tôi nói ở trên hay không?

Câu lệnh switch có thực sự tốt không?

Bài viết này cũng hơi hướng giống bài viết trước kia để công ty tôi đi tìm một Lập Trình Viên nhiều kinh nghiệm, bạn có thể tìm đọc lại và xem bản thân mình thế nào?

switch javascript


Tôi là một người code và tôi rất thích bóng đá. Chính vì vậy trong mỗi ví dụ của tôi đều có cr7 nên mọi người có yêu thích messi thì cũng bỏ quá cho. Ví dụ tôi có một data về lịch sử cầu thủ, và tôi muốn tìm tất cả các câu lạc bộ mà cầu thủ đó từng chơi. Và cách tôi triển khai như sau:

Với switch:

function test(player) {
  // Sử dụng switch lọc ra điều kiện đúng
  switch (player) {
    case 'cr7':
      return ['mu', 'juve'];
    case 'ibrahimovic':
      return ['AC Milan', 'InterMilan'];
    case 'Bale':
      return ['Tottenham', 'Roma'];
    default:
      return [];
  }
}

// Kết quả kiểm tra
test(null); // []
console.log('result 1--', test('cr7')); // "result 1--", ["mu", "juve"]

Có lẽ không cần giải thích về code nữa phải không, vì nó quá rõ ràng và như là code sạch vậy. Như từ đầu tôi nói, nhiều người không thích triển khai như trên. Vậy họ làm cách nào? Xem tiếp.

Sử dụng Map:

const clubs = new Map()
    .set('cr7', ['mu', 'juve'])
    .set('ibrahimovic', ['AC Milan', 'InterMilan'])
    .set('Bale', ['Tottenham', 'Roma']);

function test(player) {
  return clubs.get(player) || [];
}
console.log('result 2--', test('ibrahimovic')); // "result 2--", ["AC Milan", "InterMilan"]

Map vui lòng hiểu ở đây thông qua việc hiểu được định nghĩa dictionaries javascript. Chứ không phải funtion. Ok, vẫn chưa hài lòng, còn cách nào nữa không, câu trả lời là có. Bởi vậy ngôn ngữ javascript nó hay ở chỗ đó.

Sử dụng Object:

const clubs = {
    cr7: ['mu', 'juve'],
    ibrahimovic: ['AC Milan', 'InterMilan'],
    Bale: ['Tottenham', 'Roma']
}

function test(player) {
      return clubs[player] || [];
}

console.log('result 3--', test('Bale')); // "result 3--", ["Tottenham", "Roma"]

Việc sử dụng Object cho chúng ta cái nhìn thân quen hơn vì theo thống kê thì việc sử dụng Object và Array chiếm nhiều nhất trong cách viết code của chúng ta. Còn nữa không? Gần đây tôi thấy có nhiều bạn sử dụng thêm cách này nữa:

Sử dụng filter trong es6.

const clubs = [
    { club: 'mu', player: 'cr7' }, 
    { club: 'juve', player: 'cr7' }, 
    { club: 'AC Milan', player: 'ibrahimovic' }, 
    { club: 'InterMilan', player: 'ibrahimovic' }, 
    { club: 'Tottenham', player: 'Bale' }, 
    { club: 'Roma', player: 'Bale' }
 ];
 function test(player) {
  return clubs.filter(f => f.player == player);
 }

 console.log('result with filter()--', test('Bale'));
 // kết quả 
 "result with filter()--", [{
  club: "Tottenham",
  player: "Bale"
}, {
  club: "Roma",
  player: "Bale"
}]

Tóm lại

Trên đây chúng ta đã nói về Clean code là gì? Và tiêu chí nào để viết code sạch. Thêm vào đó chúng ta đã tiếp cận nhiều cách khác nhau để giải quyết một tình huống lập trình như trên, nó giống như bài viết trước đây để tìm ra một lập trình viên có trình độ. Tạm dừng bài viết ở đây. Chúc các bạn mạnh mẽ vượt qua mùa dich này.

Anonystick.

Có thể bạn đã bị missing