Giới Thiệu

Đối với lập trình viên, chưa nhắc đến việc bạn đang ở trình độ hay sử dụng ngôn ngữ lập trình nào nhưng quy tắc và phong cách đặt tên trong lập trình lại mang một cách nhìn cho người đọc code của bạn. Có quy tắc và phong cách đặt tên trong lập trình giúp tăng tính nhất quán, đọc dễ và bảo trì mã nguồn dễ dàng hơn. Bài viết này mình sẽ tổng hợp các quy tắc và phong cách lập trình phổ biến hiện nay.
Với dự án freechat của mình đã hướng dẫn ở các bài viết trước đó mình đã xây dựng theo phong cách snake_case trong đó tất cả các chữ cái trong tên file đều là chữ thường và cách nhau bởi _.

cauhinh

Phong cách đặt tên của biến hoặc hàm ở trong các file mình sử dụng phong cách camelCase trong đó tên bắt đầu bằng chữ cái thường, các từ tiếp theo bắt đầu bằng chữ cái hoa, không có dấu cách và gạch dưới hoặc gạch ngang.

bienhoacham

Để có thể tìm hiểu chi tiết và rõ hơn bạn có thể tham khảo ở link dự án Github của mình.

Phong cách đặt tên phổ biến

  1. camelCase
  • Quy tắc:
    • Tên bắt đầu bằng chữ cái thường.
    • Các từ tiếp theo bắt đầu bằng chữ cái hoa.
    • Không có dấu cách, gạch dưới hoặc gạch ngang.
  • Ví dụ:
    • Biến: userName, totalAmount, isValid
    • Hàm: calculateTotalAmount(), fetchUserData()
  • Sử dụng:
    • Được sử dụng phổ biến trong JavaScript, Java, C# và Dart cho biến và hàm. Ví dụ, trong JavaScript, biến có thể được đặt là currentPage, và hàm có thể là updateUserProfile().
  • Ưu điểm:
    • Dễ đọc: Dễ đọc hơn so với một chuỗi liên tục không có phân tách.
    • Tiêu chuẩn: Được áp dụng rộng rãi, tạo sự đồng nhất trong mã nguồn.
    • Nhận diện dễ: Phù hợp với quy tắc của nhiều ngôn ngữ lập trình và thư viện.
  • Khuyên dùng:
    • JavaScript Style Guide của Airbnb khuyến nghị sử dụng camelCase cho biến và hàm.
    • Java Code Conventions của Oracle khuyến nghị camelCase cho các biến và phương thức.
  1. PascalCase
  • Quy tắc:
    • Mỗi từ bắt đầu bằng chữ cái hoa
    • Không có dấu cách, gạch dưới hoặc gạch ngang.
  • Ví dụ:
    • Lớp: UserProfile, TotalAmountCalculator.
    • Đối tượng: HttpRequest, DatabaseConnection.
  • Sử dụng:
    • Thường dùng cho tên lớp, đối tượng trong C#, Java và Dart. Ví dụ trong Java, bạn có thể có lớp UserManager và đối tượng HttpService
      *Ưu điểm:
    • Rõ ràng: Dễ dàng phân biệt các lớp và đối tượng.
    • Tính tổ chức: Giúp nhóm các thành phần mã nguồn có liên quan với nhau.
    • Thống nhất: Phù hợp với quy chuẩn đặt tên của nhiều ngôn ngữ lập trình.
  • Khuyên dùng:
    • C# Coding Conventions khuyến nghị sử dụng PascalCase cho tên lớp và tên đối tượng.
    • Java Code Conventions cũng khuyến nghị PascalCase cho tên lớp.
  1. snake_case
  • Quy tắc:
    • Tất cả các chữ cái đều là chữ thường
    • Các từ được phân cách bằng dấu gạch dưới.
  • Ví dụ:
    • Biến: user_name, total_amount, is_valid.
    • Tên file: user_list_screen.dart, login_controller.dart.
  • Sử dụng:
    • Thường dùng trong Python, Ruby và Dart cho biến và tên file. Ví dụ, trong Python, biến có thể là user_id và tên file có thể là data_processor.py
  • Ưu điểm:
    • Dễ đọc: Các từ phân tách rõ ràng giúp dễ đọc.
    • Nhất quán: Được sử dụng phổ biến trong một số ngôn ngữ và hệ thống tệp.
    • Thích hợp cho tên file: Thường dùng cho tên file và biến trong nhiều ngôn ngữ.
  • Khuyên dùng:
    • PEP 8 — Hướng dẫn phong cách mã nguồn cho Python khuyến nghị sử dụng snake_case cho biến và tên hàm.
    • Ruby Style Guide khuyến nghị sử dụng snake_case cho các biến và tên phương thức.
  1. kebab-case
  • Quy tắc:
    - Tất cả các chữ cái đều là chữ thường.
    - Các từ được phân tách bằng dấu gạch ngang - .
  • Ví dụ
    - Tên file: user-profile.html, login-form.js
    - URL: https://example.com/user-profile, https://example.com/login-form
  • Sử dụng:
    - Thường được dùng cho URL, tên file trong web development. Ví dụ, trong các dự án web, bạn có thể có các file user-profile.htmllogin-form.js.
  • Ưu điểm:
    • Tính nhất quán: Dễ dàng duy trì đồng nhất trong URL và tên file.
    • Thân thiện với web: Được sử dụng phổ biến trong các dự án phát triển web.
    • Tốt cho SEO: URL sử dụng kebab-case dễ đọc và thân thiện với công cụ tìm kiếm.
  • Khuyên dùng:
    • Google Web Fundamentals khuyến nghị sử dụng kebab-case cho URL để cải thiện khả năng đọc và SEO.
    • HTML & CSS Style Guide của Google khuyến nghị sử dụng kebab-case cho tên file và tên lớp CSS.
  1. UPPER_CASE
  • Quy tắc:
    • Tất cả các chữ cái đều viết hoa.
    • Các từ được phân tách bằng dấu gạch dưới _.
  • Ví dụ:
    • Hằng số: MAX_VALUE, DEFAULT_TIMEOUT, API_KEY
  • Sử dụng:
    • Thường dùng cho các hằng số và biến toàn cục trong nhiều ngôn ngữ lập trình. Ví dụ, trong C++, bạn có thể định nghĩa hằng số như const int MAX_RETRIES = 5;.
  • Ưu điểm:
    • Nhấn mạnh: Dễ dàng nhận diện các hằng số và biến toàn cục.
    • Đồng nhất: Được sử dụng cho hằng số trong nhiều ngôn ngữ lập trình.
    • Tránh nhầm lẫn: Tách biệt rõ ràng các giá trị không thay đổi.
  • Khuyên dùng:
    • C++ Core Guidelines khuyến nghị sử dụng UPPER_CASE cho các hằng số.
      Java Code Conventions khuyến nghị sử dụng UPPER_CASE cho hằng số.
  1. Hungarian Notation
  • Quy tắc:
    - Tiền tố của tên biến chỉ định kiểu dữ liệu hoặc mục đích của biến.
    - Ví dụ: strUserName (chuỗi), iTotalAmount (số nguyên).
  • Sử dụng:
    - Không còn phổ biến trong các ngôn ngữ hiện đại, nhưng vẫn được sử dụng trong một số dự án cũ hoặc mã nguồn kế thừa. Ví dụ, strName cho chuỗi và iCount cho số nguyên.
  • Ưu điểm:
    • Giúp nhận diện loại dữ liệu: Tiện lợi trong việc nhận diện kiểu dữ liệu của biến.
      Tính tương thích: Được sử dụng trong mã nguồn cũ, dễ duy trì mã nguồn kế thừa.
  • Khuyên dùng:
    • Microsoft’s Programming Guidelines khuyến nghị sử dụng Hungarian Notation cho các biến trong một số tình huống.

Quy tắc đặt tên chung

  1. Ý nghĩa và rõ ràng
  • Quy tắc: Tên biến, hàm, lớp nên phản ánh rõ chức năng hoặc mục đích của nó.
  • Tốt: caculateTotalAmount(), fetchUserData()
  • Kém: calc(), fetch()
  1. Nhất quán
  • Quy tắc: Sử dụng phong cách đặt tên nhất quan trong toàn bộ dự án.
  • Ví dụ: Nếu bạn sử dụng camelCase cho hàm, hãy dùng camelCase cho tất cả các hàm trong dự án.
  1. Ngắn gọn nhưng rõ ràng
  • Quy tắc: Tên nên đủ ngắn để không gây rối, nhưng vẫn phải rõ ràng.
  • Tốt: userProfile, totalAmount
  • Kém: usrProf, tAmnt
  1. Tránh viết tắt
  • Quy tắc: Trừ khi viết tắt đã phổ biến hoặc dễ hiểu.
  • Tốt: maximumRetries
  • Kém: maxR
  1. Không dùng từ viết tắt không rõ ràng
  • Quy tắc: Sử dụng các từ đầy đủ và dễ hiểu.
  • Tốt: numberOfUsers
  • Kém: numUsr
  1. Tránh sử dụng ký tự đặc biệt
  • Quy tắc: Tránh sử dụng ký tự đặc biệt không cần thiết như @,$,%,…
  1. Tên danh sách và tập hợp
  • Quy tắc: Thường thêm hậu tố số nhiều như items, users, results.
  • Tốt: userList, errorMesages
  • Kém: user, mesage

Tổng kết

Áp dụng các quy tắc và phong cách đúng cách giúp mã nguồn của bạn trở nên dễ đọc hơn, dễ bảo trì và mở rộng hơn. Chọn phong cách phù hợp với ngôn ngữ lập trình và tuân thủ nhất quan trong toàn bộ dự án để đạt hiệu quả tốt nhất!!