Quy tắc con rắ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)  
 R, đối với tên biến, tên hàm, tên tham số, đặc biệt trong kiểu tidyverse  
 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

Xem thêm 

 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

Liên kết ngoài 

 Chuyển đổi quy tắc con rắn

Mã nguồn