蛇形命名法snake_case)是指每個空格皆以底線(_)取代的書寫風格,且每個單字的第一個字母皆為小寫。蛇形命名法經常被使用在電腦科學當中,例如程式語言變數名稱、副程式的名字以及檔案名稱。一份研究指出相較於駝峰式大小寫,使用蛇形命名法能夠讓讀者更快速的辨識出值的含意[1]

Linux 核心模組的程式碼,裡面使用了蛇形命名法。

歷史

編輯

利用底線作為分隔符號的使用方法最早可以回朔至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). 

外部連結

編輯