Quy ước đặt tên (lập trình)

Bách khoa toàn thư mở Wikipedia

Trong khoa học máy tính, quy ước đặt tên (tiếng Anh: naming convention) là một tập hợp các quy tắc để chọn chuỗi kí tự được dùng cho các định danh biểu thị các biến, kiểu, hàm, và các thực thể khác trong mã nguồntài liệu.

Lí do sử dụng quy ước đặt tên (thay vì để lập trình viên chọn bất kì chuỗi kí tự nào) bao gồm:

  • Để giảm nỗ lực cần thiết để đọc và hiểu mã nguồn;[1]
  • Cho phép xem lại mã để tập trung vào những vấn đề quan trọng hơn thay vì tranh luận về tiêu chuẩn cú pháp và đặt tên.
  • Để cho phép các công cụ đánh giá chất lượng mã để tập trung báo cáo chính vào các vấn đề quan trọng khác ngoài các tùy chọn cú pháp và kiểu.

Sự lựa chọn của quy ước đặt tên có thể là một vấn đề gây tranh cãi lớn, với các phe phái mà mỗi bên lại cho họ là tốt nhất và những bên khác là kém hơn. Thông thường, đây được cho là vấn đề giáo điều.[2] Nhiều công ty tự thiết lập các quy ước riêng của họ.

Lợi ích tiềm năng[sửa | sửa mã nguồn]

Một số lợi ích tiềm năng có thể đạt được khi áp dụng quy ước đặt tên bao gồm:

  • Cung cấp thông tin bổ sung (ví dụ như siêu dữ liệu) về cách dùng của định danh;
  • Giúp nghi thức hóa các mong đợi và thúc đẩy tính nhất quán trong nhóm phát triển;
  • Cho phép sử dụng các công cụ cải tiến mã nguồn tự động hoặc tìm kiếm và thay thế với tối thiểu khả năng sai sót;
  • Tăng sự rõ ràng trong các trường hợp tiềm ẩn sự mơ hồ;
  • Tăng sự thẩm mỹ và hình thức chuyên nghiệp của sản phẩm (ví dụ: từ chối các tên dài, tên hài hước hoặc "dễ thuơng", hoặc viết tắt);
  • Giúp tránh "trùng tên" có thể xảy ra khi kết hợp với sản phẩm của các tổ chức khác (xem thêm: namespaces);
  • Cung cấp dữ liệu có ý nghĩa được sử dụng trong bàn giao dự án mà yêu cầu gửi mã nguồn chương trình và tất cả các tài liệu liên quan;
  • Hiểu rõ hơn khi sử dụng lại mã sau một thời gian dài.

Thử thách[sửa | sửa mã nguồn]

Lựa chọn các quy ước đặt tên (và mức độ thực thi) thường là một vấn đề gây tranh cãi, với các phe phái giữ quan điểm của họ là tốt nhất và những cái khác là tệ nhất. Hơn thế, kể cả với các quy ước đặt tên đã biết và được xác định rõ ràng, một số tổ chức có thể không tuân thủ sự nhất quán, gây ra sự thiếu nhất quán và nhầm lẫn. Những thử thách này có thể trở nên trầm trọng nếu các quy tắc quy ước đặt tên không nhất quán nội bộ, tùy tiện, khó nhớ, hoặc có thể được xem là gánh nặng hơn là có lợi.

Khả năng đọc[sửa | sửa mã nguồn]

Các mã định danh được lựa chọn tốt giúp các nhà phát triển và nhà phân tích dễ dàng hơn một cách đáng kể trong việc hiểu rõ hệ thống đang làm gì và cách sửa chửa hoặc mở rộng mã nguồn để áp dụng cho các nhu cầu mới.

Ví dụ:

a = b * c;

Mặc dù cú pháp trên là đúng, nhưng mục đích của nó không rõ ràng. Thay vào đó là sử dụng:

 weekly_pay = hours_worked * hourly_pay_rate;

ngụ ý dự định và ý nghĩa của mã nguồn, ít nhất là những người quen thuộc với ngữ cảnh của câu lệnh.

Một số định dạng mã định danh nhiều từ[sửa | sửa mã nguồn]

Một số mã định danh nhiều từ
Định dạng Tên gọi
twowords flat case[3][4]
TWOWORDS upper flat case[3]
twoWords (lower) camelCase, dromedaryCase
TwoWords PascalCase, UpperCamelCase, StudlyCase[5]
two_words snake_case, pothole_case
TWO_WORDS SCREAMING_SNAKE_CASE, MACRO_CASE, CONSTANT_CASE
two_Words camel_Snake_Case
Two_Words Pascal_Snake_Case
two-words kebab-case, dash-case, lisp-case
two|words doner|case
TWO-WORDS TRAIN-CASE, COBOL-CASE, SCREAMING-KEBAB-CASE
Two-Words Train-Case[3], HTTP-Header-Case[6]

Tham khảo[sửa | sửa mã nguồn]

  1. ^ Derek M. Jones "Operand names influence operator precedence decisions" An experiment investigating the effect of variable names on operator precedence selection
  2. ^ Raymond, Eric S. (1 tháng 10 năm 2004). “religious issues”. The Jargon File . Truy cập 7 Tháng mười một năm 2011.
  3. ^ a b c “What are the different kinds of cases?”. Stack Overflow. Truy cập ngày 18 tháng 2 năm 2021.
  4. ^ “A brief list of programming naming conventions”. deanpugh.com. Truy cập ngày 18 tháng 2 năm 2021.
  5. ^ “PSR-1: Basic Coding Standard”. php-fig. Truy cập Ngày 18 tháng 2 năm 2021.
  6. ^ “Examples | camel-snake-kebab”. camel-snake-kebab. Truy cập Ngày 18 tháng 2 năm 2021.

Liên kết ngoài[sửa | sửa mã nguồn]