蛇形命名法
蛇形命名法(snake_case)是指每个空格皆以底线(_)取代的书写风格,且每个单字的第一个字母皆为小写。蛇形命名法经常被使用在电脑科学当中,例如程式语言的变数名称、副程式的名字以及档案名称。一份研究指出相较于驼峰式大小写,使用蛇形命名法能够让读者更快速的辨识出值的含意[1]。
历史
利用底线作为分隔符号的使用方法最早可以回朔至1960年代晚期,这种使用方法特别与C语言有关系,在C程式设计语言当中曾出现过,并且与驼峰式大小写形成对比。然而,当时这样的使用方法并没有被特别命名,Python网站也仅仅使用"lower_case_with_underscores"来称呼它。[2]
在网路上,蛇形命名法一词在2004年首次出现于Ruby社群当中,Gavin Kistner写道:
对了... 你们怎么称呼这种命名风格?蛇形命名法?在有人纠正我之前,我会这样称呼它。
然而,前英特尔工程师 Jack Dahlgren 表示,他2002年还在英特尔工作时就已经在使用这个词了[3]。这个词有可能在多个社区内独立的被发展出来。
截至2015年[update],其他以分隔符分隔的命名规则的名称尚未标准化,例如lisp-case、kebab-case、SCREAMING_SNAKE_CASE 等等。[4][5][6]
范例
下面列出使用蛇型命名法的程式语言
- ABAP [7]
- Ada ,首字母也大写[8]
- C++, Boost [9]
- C ,用于标准库中的某些类型名称,但不适用于函数名称。
- Eiffel ,用于类别和feature名称[10]
- Elixir ,用于atom、变数和函数名称[11]
- Erlang ,用于函数名称[12]
- GDScript ,用于变数和函数名称[13]
- Java使用 SCREAMING_SNAKE_CASE 作为静态、常数和列举的名称。 [14]
- Magik
- OCaml ,用于值、类型和模组的名称[15]
- Perl ,用于词法变数和副程式[16]
- Oracle SQL 和PL/SQL[17],用于所有不带引号的标识符(资料表、栏位、索引、限制、PL/SQL 变数、常数、程序/函数、触发器等),虽然不是 Oracle 本身官方所使用的方法,但仍然受到大多数的使用者推荐并于 Oracle 官方文档中使用
- 所有未加引号的蛇形命名法标识符实际上在内部使用 SCREAMING_SNAKE_CASE 标识符。
- Prolog ,用于atoms(谓词名称、函数名称和常数)和变数[18]
- Python ,用于变数名、函数名、方法名以及模组或包(即文件)名[2]
- PHP使用 SCREAMING_SNAKE_CASE 作为类别常数
- R ,用于变数名、函数名、参数名,尤其是 tidyverse 风格[19]
- Ruby ,用于变数和方法名称[20]
- Rust ,用于变数名、函数名、方法名、模组名和巨集[21]
- TCL
参见
参考文献
- ^ Sharif, Bonita; Maletic, Jonathan I. An Eye Tracking Study on camelCase and under_score Identifier Styles (PDF). 2010 IEEE 18th International Conference on Program Comprehension. IEEE: 196–205. 2010 [2021-12-19]. ISBN 978-1-4244-7604-6. ISSN 1092-8138. doi:10.1109/ICPC.2010.41. (原始内容 (pdf)存档于2022-07-07).
- ^ 2.0 2.1 Guido van Rossum; Barry Warsaw; Nick Coghlan. PEP 0008 -- Style Guide for Python Code. 2001-07-05 [2021-12-19]. (原始内容存档于2019-04-17).
- ^ Quora. 2013-05-10.
- ^ StackOverflow - What's the name for snake_case with dashes?. [2021-12-19]. (原始内容存档于2014-12-26).
- ^ Programmers - If this is camelCase what-is-this?. [2021-12-19]. (原始内容存档于2016-08-07).
- ^ Camel_SNAKE-kebab. 23 April 2020 [2021-12-19]. (原始内容存档于2018-06-11).
- ^ Naming Conventions in ABAP Objects. help.sap.com. [2020-07-28]. (原始内容存档于2021-12-19).
- ^ Ada Programming Guidelines. [2021-12-19]. (原始内容存档于2022-01-25).
- ^ Boost Library Requirements and Guidelines. [2015-08-13]. (原始内容存档于2021-12-19).
- ^ Eiffel Class and Feature Names. 28 December 2019 [2021-12-19]. (原始内容存档于2017-08-11).
- ^ Elixir Style Guide. May 2020.
- ^ Programming Rules. [2017-08-11]. (原始内容存档于2010-09-04).
- ^ GDScript Style Guide. [2021-12-19]. (原始内容存档于2021-12-19).
- ^ Code Conventions for the Java Programming Language - Naming Conventions. Oracle. [2021-08-03]. (原始内容存档于2021-03-10).
- ^ Xen wiki. [2017-03-15]. (原始内容存档于2021-12-19).
- ^ Damian Conway. Perl Best Practices. O'Reilly Media Inc. 2005: 44. ISBN 978-0596001735.
- ^ Quick Guide to Some Sources for Naming Conventions for Oracle Database Development. stevenfeuersteinonplsql.blogspot.com. [2020-12-30]. (原始内容存档于2021-12-19).
- ^ Michael A. Covington; Roberto Bagnara; Richard A. O'Keefe; Jan Wielemaker; Simon Price. Coding Guidelines for Prolog. arXiv:0911.2899v3 .
- ^ Wickham, Hadley. The tidyverse style guide. [2021-12-19]. (原始内容存档于2022-07-07).
- ^ Ruby Naming Conventions. May 2020.
- ^ Naming - Rust API Guidelines. [2021-12-19]. (原始内容存档于2018-09-16).