蛇形命名法
外觀
蛇形命名法(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).