Quy tắc con rắn
Quy tắc con rắn (tiếng Anh: snake case, còn được viết cách điệu là snake_case) là một cách viết các từ hoặc cụm từ ghép trong đó các thành phần được phân tách bằng ký tự gạch dưới (_) và không có khoảng trắng, với chữ cái đầu tiên của mỗi thành phần được viết thường còn chữ đầu tiên của cụm từ có thể viết thường hoặc viết in như trong "foo_bar" hay "Hello_world". Quy tắc này thường được sử dụng trong mã máy tính để đặt tên biến, tên hàm và đôi khi cả tên tập tin trên máy tính.[1]
Đã có ít nhất một nghiên cứu cho thấy người đọc có thể nhận biết cụm từ viết bằng quy tắc con rắn nhanh hơn Quy tắc lạc đà.[2]
Lịch sử
[sửa | sửa mã nguồn]Việc sử dụng dấu gạch dưới làm dấu tách từ trong các định danh trong ngôn ngữ lập trình đã có từ khá lâu, khoảng cuối những năm 1960. Trường hợp nổi tiếng nhất là ngôn ngữ C, được ghi trong cuốn Ngôn ngữ lập trình C (1978), trái ngược với Quy tắc Pascal (một loại quy tắc lạc đà). Tuy nhiên khi đó quy tắc này chưa có tên gọi cụ thể: tài liệu hướng dẫn trình bày của Python chỉ đơn giản gọi nó là "chữ_thường_có_gạch_nối_dưới" (lower_case_with_underscores).[3]
Trong Usenet, tên gọi "snake_case" lần đầu tiên được thấy khi Gavin Kistner dùng nó trong cộng đồng Ruby vào năm 2004:[4]
Ngoài ra...các bạn *gọi* quy tắc đặt tên này là gì? snake_case? Tôi sẽ dùng chữ này nếu không có ai nói tôi sai.
Tuy nhiên, một cựu kỹ sư của Intel, Jack Dahlgren, đã nói[5] trên Quora rằng ông đã sử dụng thuật ngữ này trong nội bộ Intel (và có lẽ trong các cuộc đối thoại với kỹ sư Microsoft) vào năm 2002. Có lẽ thuật ngữ này đã được tạo ra một cách độc lập trong các cộng đồng lập trình viên.
Ví dụ về các ngôn ngữ sử dụng quy tắc con rắn
[sửa | sửa mã nguồn]- OCaml, cho tên giá trị, kiểu và mô-đun [6]
- ABAP
- C, đối với một số tên kiểu trong thư viện chuẩn, nhưng không dùng cho tên hàm.
- C++, dùng cho thư viện chuẩn[7] và Boost[8]
- Erlang, cho tên hàm [9]
- GDScript, cho tên biến và hàm [10]
- Java, cho các hằng số cuối tĩnh (static final) và các giá trị enum.
- Perl, cho các biến từ vựng và chương trình con[11]
- Python, cho tên biến, tên hàm, tên phương thức và tên mô-đun hoặc gói (như tập tin) [3]
- R, đối với tên biến, tên hàm, tên tham số, đặc biệt trong kiểu tidyverse [12]
- Ruby, cho tên biến và phương thức [13]
- Rust, cho các biến tĩnh và hằng số.[14]
- Elixir, cho tên nguyên tử, biến và hàm [15]
- Eiffel, cho tên lớp và tính năng [16]
Xem thêm
[sửa | sửa mã nguồn]- Quy tắc lạc đà, phổ biến trong Java
- Quy tắc kebab, phổ biến trong LISP
- Quy ước đặt tên (lập trình)
Tham khảo
[sửa | sửa mã nguồn]- ^ ví dụ như trong Python và Ruby; xem Quy ước đặt tên (lập trình)
- ^ “An Eye Tracking Study on camelCase and under_score Identifier Styles”.
- ^ a b Guido van Rossum, Barry Warsaw, Nick Coghlan (5 tháng 7 năm 2001). “PEP 0008 -- Style Guide for Python Code”.
- ^ "Appropriate use of camelCase". (Google Groups).
- ^ “Quora”. 10 tháng 5 năm 2013.
- ^ “Xen wiki”. Truy cập ngày 15 tháng 3 năm 2017.
- ^ “Library Design Guidelines”. Truy cập ngày 13 tháng 12 năm 2018.
- ^ “Boost Library Requirements and Guidelines”. Truy cập ngày 13 tháng 8 năm 2015.
- ^ “Programming Rules”. Bản gốc lưu trữ ngày 4 tháng 9 năm 2010. Truy cập ngày 11 tháng 8 năm 2017.
- ^ “GDScript Style Guide”.
- ^ Damian Conway (2005). Perl Best Practices. O'Reilly Media Inc. tr. 44. ISBN 978-0596001735.
- ^ Wickham, Hadley. The tidyverse style guide.
- ^ “Ruby Naming Conventions”.
- ^ “Naming - Rust API Guidelines”. Bản gốc lưu trữ ngày 16 tháng 9 năm 2018. Truy cập ngày 21 tháng 2 năm 2020.
- ^ “Elixir Style Guide”.
- ^ “Eiffel Class and Feature Names”.