蛇形命名法

维基百科,自由的百科全书
Linux 核心模组的程式码,里面使用了蛇形命名法。

蛇形命名法snake_case)是指每个空格皆以底线(_)取代的书写风格,且每个单字的第一个字母皆为小写。蛇形命名法经常被使用在计算机科学当中,例如编程语言变数名称、副程式的名字以及档案名称。一份研究指出相较于驼峰式大小写,使用蛇形命名法能够让读者更快速的辨识出值的含意[1]

历史[编辑]

利用底线作为分隔符号的使用方法最早可以回朔至1960年代晚期,这种使用方法特别与C语言有关系,在C程式设计语言当中曾出现过,并且与驼峰式大小写形成对比。然而,当时这样的使用方法并没有被特别命名,Python网站也仅仅使用"lower_case_with_underscores"来称呼它。[2]

在网络上,蛇形命名法一词在2004年首次出现于Ruby社群当中,Gavin Kistner写道:

对了... 你们怎么称呼这种命名风格?蛇形命名法?在有人纠正我之前,我会这样称呼它。

然而,前英特尔工程师 Jack Dahlgren 表示,他2002年还在英特尔工作时就已经在使用这个词了[3]。这个词有可能在多个社区内独立的被发展出来。

截至2015年 (2015-Missing required parameter 1=month!),其他以分隔符分隔的命名规则的名称尚未标准化,例如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

参见[编辑]

参考文献[编辑]

  1. ^ 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. ^ 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). 
  3. ^ Quora. 2013-05-10. 
  4. ^ StackOverflow - What's the name for snake_case with dashes?. [2021-12-19]. (原始内容存档于2014-12-26). 
  5. ^ Programmers - If this is camelCase what-is-this?. [2021-12-19]. (原始内容存档于2016-08-07). 
  6. ^ Camel_SNAKE-kebab. 23 April 2020 [2021-12-19]. (原始内容存档于2018-06-11). 
  7. ^ Naming Conventions in ABAP Objects. help.sap.com. [2020-07-28]. (原始内容存档于2021-12-19). 
  8. ^ Ada Programming Guidelines. [2021-12-19]. (原始内容存档于2022-01-25). 
  9. ^ Boost Library Requirements and Guidelines. [2015-08-13]. (原始内容存档于2021-12-19). 
  10. ^ Eiffel Class and Feature Names. 28 December 2019 [2021-12-19]. (原始内容存档于2017-08-11). 
  11. ^ Elixir Style Guide. May 2020. 
  12. ^ Programming Rules. [2017-08-11]. (原始内容存档于2010-09-04). 
  13. ^ GDScript Style Guide. [2021-12-19]. (原始内容存档于2021-12-19). 
  14. ^ Code Conventions for the Java Programming Language - Naming Conventions. Oracle. [2021-08-03]. (原始内容存档于2021-03-10). 
  15. ^ Xen wiki. [2017-03-15]. (原始内容存档于2021-12-19). 
  16. ^ Damian Conway. Perl Best Practices. O'Reilly Media Inc. 2005: 44. ISBN 978-0596001735. 
  17. ^ Quick Guide to Some Sources for Naming Conventions for Oracle Database Development. stevenfeuersteinonplsql.blogspot.com. [2020-12-30]. (原始内容存档于2021-12-19). 
  18. ^ Michael A. Covington; Roberto Bagnara; Richard A. O'Keefe; Jan Wielemaker; Simon Price. Coding Guidelines for Prolog. arXiv:0911.2899v3可免费查阅. 
  19. ^ Wickham, Hadley. The tidyverse style guide. [2021-12-19]. (原始内容存档于2022-07-07). 
  20. ^ Ruby Naming Conventions. May 2020. 
  21. ^ Naming - Rust API Guidelines. [2021-12-19]. (原始内容存档于2018-09-16). 

外部链接[编辑]