✨Quy tắc con rắn
nhỏ| Đoạn mã từ một mô-đun [[hạt nhân Linux, sử dụng quy tắc con rắn cho tên biến. ]] Quy tắc con rắn (, 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.
Đã 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 đà.
Lịch sử
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).
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:
Tuy nhiên, một cựu kỹ sư của Intel, Jack Dahlgren, đã nói 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
- OCaml, cho tên giá trị, kiểu và mô-đun
- 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 và Boost
- Erlang, cho tên hàm
- GDScript, cho tên biến và hàm
- 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
- 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)
- Ruby, cho tên biến và phương thức
- Rust, cho các biến tĩnh và hằng số.
- Elixir, cho tên nguyên tử, biến và hàm
- Eiffel, cho tên lớp và tính năng