fbpx

Trời ơi! Đừng có đọc hết cuốn Clean Code dày cộm đó nữa! Dùng 3 nguyên tắc này là đủ

3 nguyên tắc Clean Code cơ bản giúp lập trình viên viết code sạch và tối ưu

Thật đó! Bạn đừng nghĩ rằng cứ phải đọc hết cuốn sách Clean Code thì mới áp dụng được nhé.

Ai học clean code mà chẳng biết cuốn sách kinh điển: Clean Code: A Handbook of Agile Software Craftsmanship.

Nhưng để nuốt trọn đống lý thuyết trong cuốn sách này chua lắm à nhang! Mấy ông dev đi làm 3-4 năm kinh nghiệm đọc nhiều chỗ còn lớ ngớ chứ chẳng đùa.

Thôi, mới học lập trình cứ nắm cho mình 3 nguyên tắc clean code này trước đi. Đảm bảo áp dụng được ngay cho 95% dự án thực tế luôn.

Cứ code cho lên tay đi, rồi sau này quay lại cày cuốc, nghiên cứu quyển Clean Code kia sau cũng chẳng muộn.

1. Tránh lồng ghép quá sâu

Khi bạn nhồi nhét quá nhiều tầng if/else, người đọc code sẽ phải luôn trong trạng thái căng não để hiểu và ghi nhớ một chuỗi điều kiện dài dằng dặc.

Đến khi mò được vào đến phần logic cốt lõi ở tận cùng rồi, họ đã trở nên lú lẫn vì phải vừa đọc vừa nhớ xem mình đang ở tầng điều kiện nào.

Bad code (Lồng ghép sâu, gây rối mắt):

function placeOrder(shop, cart, user) {
  if (shop.isOpen) {
    if (cart.items.length > 0) {
      if (user.balance >= cart.totalPrice) {
        // Logic chính
        let invoice = createInvoice(cart);
        return invoice;
      } else {
        return "Tài khoản không đủ tiền rồi";
      }
    } else {
      return "Giỏ hàng trống trơn kìa";
    }
  } else {
    return "Quán đóng cửa rồi, ngủ đi";
  }
}

Good code (Viết lại gọn gàng hơn):

function placeOrder(shop, cart, user) {
  // Xử lý bắt các trường hợp lỗi ngay từ đầu
  if (!shop.isOpen) {
    return "Quán đóng cửa rồi, ngủ đi";
  }

  if (cart.items.length === 0) {
    return "Giỏ hàng trống trơn kìa";
  }

  if (user.balance < cart.totalPrice) {
    return "Tài khoản không đủ tiền rồi";
  }

  // Logic xử lý chính không còn bị lồng ghép nữa
  let invoice = createInvoice(cart);
  return invoice;
}

Bạn có thể thấy, đoạn code sau khi điều chỉnh đã trở nên phẳng hơn và dễ đọc hơn rất nhiều.

Chìa khóa ở đây chính là áp dụng kỹ thuật Return early.

Hiểu một cách đơn giản là dùng từ khóa return để thoát hàm ngay lập tức nhằm tránh việc phải lồng ghép code quá sâu.

Như ở ví dụ trên, thay vì kiểm tra điều kiện ĐÚNG để lồng code vào sâu bên trong, chúng ta ưu tiên kiểm tra các điều kiện SAI trước, rồi dùng return để thoát hàm ngay lập tức.

2. Tránh lặp lại code (Nguyên tắc DRY)

Đây chính là nguyên tắc DRY (Don’t Repeat Yourself) nổi tiếng.

Hãy xem ví dụ dưới đây: Logic lấy token từ localStorage và gán vào header đang bị lặp lại.

Giả sử bạn copy-paste logic này cho 20 hàm fetch dữ liệu khác nhau, khi có yêu cầu thay đổi code, bạn phải mò mẫm và sửa lại đúng 20 chỗ đó. Rất mất thời gian và rủi ro sửa sót cực kỳ cao.

Bad code:

function fetchUserProfile(){
  const token = localStorage.getItem('token');
  const headers = { 'Authorization': `Bearer ${token}` };

  return fetch('/api/profile', { headers });
}

function fetchUserOrders(){
	// Lặp lại logic lấy token & gán vào header
	const token = localStorage.getItem('token');
	const headers = { 'Authorization': `Bearer ${token}` };
   
  return fetch('/api/orders', { headers });
}

Good code:

// Gom những đoạn code lặp lại vào một hàm dùng chung
function fetchWithAuth(url){
  const token = localStorage.getItem('token');
  const headers = { 'Authorization': `Bearer ${token}` };
  return fetch(url, { headers });
}

// Ở các hàm gọi API, giờ chỉ cần truyền mỗi URL là xong:
function fetchUserProfile(){
  return fetchWithAuth('/api/profile');
}

function fetchUserOrders(){
	return fetchWithAuth('/api/orders');
}

Thay vì copy-paste khắp nơi, chúng ta gom những đoạn code lặp lại vào một hàm dùng chung. Nếu có thay đổi, bạn chỉ cần sửa ở đúng một chỗ là toàn bộ hệ thống được cập nhật.

Nhớ là đừng lạm dụng DRY!

Đúng là DRY rất tốt, nhưng đừng áp dụng nó một cách bừa bãi.

Nhiều bạn mới biết đến nguyên tắc này thường mắc hội chứng “ám ảnh trùng lặp”, cứ thấy code giống nhau chỉ 1-2 nơi là vội vàng tách hàm.

Hậu quả là code bị xé vụn ra, báo hại người đọc phải nhảy qua chục file mới hiểu nổi một luồng xử lý đơn giản.

Đây cũng chính là một trong 9 sai lầm chí mạng đang âm thầm kéo lùi sự nghiệp của bạn.

Kinh nghiệm thực chiến: Chỉ khi nào phải copy-paste một đoạn code tới lần thứ 3 hoặc thứ 4 và thực sự bắt đầu thấy khó quản lý, thì đó mới là lúc cần thiết để gom chúng lại thành một hàm dùng chung.

3. Đừng đặt tên theo kiểu “Chỉ mình tui biết”

Nếu không muốn trở thành tội đồ trong mắt đồng nghiệp, đừng mắc sai lầm này.

Việc bạn dùng các biến a, b, c hoặc viết tắt ngẫu nhiên không giúp chương trình chạy nhanh hơn, nó chỉ làm cả team lãng phí thêm thời gian để giải mã ý đồ của bạn.

Bad code:

function calc(d, u) {
  let t = 0;
  
  if (u === 1) {
    t = d * 0.1;
  }
  
  return d + t;
}

Good code (Tên biến truyền tải trọn vẹn ý nghĩa):

function calculateTotalWithTax(orderAmount, userType) {
  let taxAmount = 0;
  const PREMIUM_USER_TYPE = 1;
  const TAX_RATE = 0.1;

  if (userType === PREMIUM_USER_TYPE) {
    taxAmount = orderAmount * TAX_RATE;
  }
  
  return orderAmount + taxAmount;
}

Nguyên lý rất đơn giản: Đặt tên sao cho người khác nhìn vào là biết ngay biến này chứa gì, hàm này làm nhiệm vụ gì.

Làm được điều này, code của bạn sẽ tự động trở nên sạch sẽ và chuyên nghiệp hơn rất nhiều lập trình viên ngoài kia rồi đấy.

Hãy viết code tử tế để tiến xa hơn

Những nguyên tắc trên tuy đơn giản nhưng sẽ tạo ra bước ngoặt cực lớn cho chất lượng dự án và cả con đường sự nghiệp của bạn.

Nếu bạn đang đối mặt với quá nhiều kiến thức và chưa biết bắt đầu từ đâu, hoặc tự học mãi mà vẫn không thể tự code được một dự án thực tế, thì đã đến lúc bạn cần một hướng đi rõ ràng hơn.

Việc có Mentor cầm tay chỉ việc 1-1 ngay từ những ngày đầu sẽ giúp bạn đi đúng hướng, tiết kiệm thời gian và tự tin bứt phá trên con đường sự nghiệp của mình.

👉 Đừng chờ đợi gì nữa, hãy tham khảo ngay các khóa học lập trình 1 kèm 1 của LetDiv nhé!

Tùng ViO

Tùng ViO

Mình là Tùng ViO, hiện tại đang là Founder và cũng là giảng viên tại LetDiv. Rất hân hạnh được làm quen với bạn!

Có thể bạn quan tâm