连字符分隔命名法的名称是什么?

680

这是PascalCase: SomeSymbol

这是camelCase: someSymbol

这是snake_case: some_symbol

所以我的问题是,是否有一个广泛接受的名称来描述这个格式:some-symbol?它通常用于url中。


16
Lisp使用this-case,由于谷歌将“-”视为空格,几乎所有SEO友好的URL也使用它。 - lmirosevic
34
@CatPlusPlus 1) URL在编程语言中并非无关紧要,它们是编程语言经常使用的资源之一。一些编程语言甚至将URL视为一级对象。在Go语言中,虽然不是一级对象,但URL用于导入包。2) 破折号分隔的字符串在几种语言(例如LISP家族)中很常见,也在编程中使用的辅助语言(如CSS)中很常见。对于您来说什么是"少数派",对于其他人来说可能是他们每天工作的语言。我们并不都是VB6程序员。 - Hejazzman
6
kebab-case 不仅在 LISP 中使用,而且在 CSS 及其所有新潮的图灵完备预处理器中也被使用,在 XSLT 和 XPath 中也被使用,以及在任何其他基于 XML 的语言中都被广泛使用,它们远非少数。 - Tobia
6
EJoshua:这是一个实际问题,因为讨论标识符、变量名等是软件开发人员的一部分。从社会科学的角度来看,它也是可以回答的,因为我们可以查看源代码库(也许结合受欢迎程度加权),以及自然语言趋势(通过Google或其他方式)。此外,这些术语非常有趣,别扫了我们的兴。所以我现在要正式打破你对派对的扫兴。 - David J.
显示剩余8条评论
15个回答

573

这种命名约定没有一个标准的名称,并且存在对应该被称为什么的争议。

然而,截至2019年,有充分的理由认为kebab-case处于领先地位:

https://trends.google.com/trends/explore?date=all&q=kebab-case,spinal-case,lisp-case,dash-case,caterpillar-case

spinal-case排名第二,其他术语几乎没有任何影响力。

此外,kebab-case已成为多个JavaScript代码库中的词汇,例如:

然而,仍然有其他术语被使用。Lisp已经使用这种约定几十年,如维基百科中所述,因此一些人将其描述为lisp-case。我看过的其他形式包括caterpillar-casedash-casehyphen-case,但没有一个是标准的。

所以,对于你的问题的答案是:没有单一被广泛接受的命名约定,类似于广泛接受的 snake_casecamelCase


156
维基百科的相关文章目前引用了一个链接,指向这个Stack Overflow问题...具体来说是关于kebab-case的问题。也许使用维基百科作为来源并不明智。 - dequis
8
@BenLee,我是你感觉修改了文本的人,为此道歉。请注意,"spinal-case/Train-Case"一词是由一个匿名用户于2012年10月7日添加到维基百科上的,没有其他维基百科历史记录的IP地址提供参考资料。我找不到任何其他证据证明这些术语,除了循环地回到维基百科之外。另一方面,我认为这个StackOverflow问题确实提供了证据,表明"kebab-case"有一个不依赖于未经证实的维基百科条目输入的用户社区。我希望这已足以避免"原创研究"的指控。 - Robert Tupelo-Schneck
8
我曾想彻底删除 spinal-case 和 Train-Case(因为它们很可能是恶意破坏),但长期存在的维基百科破坏可能会为自己创造证据。这似乎就是在这里发生的事情。 - Robert Tupelo-Schneck
13
我喜欢“毛毛虫式样”因为它被压扁了又变长,而且符合动物主题。 - RenaissanceProgrammer
70
串式命名法(kebab-case),因为它看起来像是单词被串在烤肉串上。 - Aaron_H
显示剩余20条评论

520

212
这里有一个参考链接,它正式确认了“snake case with dashes”的名称 ;) - Andreas
13
这里提供另一个参考链接:https://github.com/qerub/camel-snake-kebab;) - qerub
12
参考文献中的递归意味着它更加类似于 Lisp。 - Michael Della Bitta
151
我点赞这个答案并不是因为我认为它是正确的,而是因为我希望它是正确的。 - Jason Swett
49
我喜欢这里进行的源头生成(citogenesis)过程。此答案链接到lodash,它链接到维基百科,最后链接回了此答案! - gilly3
显示剩余16条评论

40

这种情况有时也被称为毛毛虫式


69
毛毛虫式大小写(caterpillar-case)比串肉式大小写(kebab-case)更有意义,因为骆驼、蛇和毛毛虫都是各种生命体的类型,而烤肉串却不是。 - Daira Hopwood
28
好的,这是一张图片的链接。 - mikemaccana
7
因为“caterpillar”有四个音节,而“kebab”、“dash”和“hyphen”只有一个或两个音节,所以我认为争取使用"caterpillar-case"这一术语是徒劳无功的。 - Ninjakannon
3
“caterpillar-case”太长了,不适合作为案件名称,我觉得“worm-case(虫子案件)”会是一个更好的选择。 :D - Bahattin Ungormus
12
@DairaHopwood 完全同意。帕斯卡也是一个有生命的生物。 - nawfal
显示剩余4条评论

24

这是最著名的情况,有许多名称

  • 烤肉串式命名法:这是官方软件采用的名称
  • 毛毛虫式命名法
  • 短横线式命名法
  • 连字符式命名法中横线式命名法
  • Lisp命名法
  • 脊柱式命名法
  • CSS命名法
  • Slug命名法
  • 友好URL命名法

22
作为字符"-"通常被称为"连字符"或"破折号",因此更自然的命名方式是"连字符命名法"或"短横线命名法"(较少使用)。
维基百科中所述,"烤肉串命名法"也被使用。显然(见答案),这是因为该字符看起来像一个烤肉串... 尽管需要一些想象力。
例如在lodash lib中使用。
最近,"连字符命名法"被使用。

9
如果有帮助的话,“kebab case” 更多指的是烤肉串(shish-kebab)而不是烤肉夹饼(döner kebab)。 - Alper

16

在这里添加正确的链接烤肉串式命名法

这种命名法全部使用小写字母,单词之间用 - 分隔。


11

我一直称呼它为“短横线命名法”,也经常听到别人这样称呼。


23
它将永远被称为“Dashy McDash Case”。 - colllin
17
@colllin,我认为你指的是dashy-mcdash-case;) - siguy85

7

我一直把它称为烤肉串式命名法

有趣的是,当所有字母都大写时,有些人会称其为SCREAM-KEBAB

烤肉串式命名法警告

我一直喜欢使用 烤肉串式命名法,因为在需要空格时它似乎最易读。但是,有些程序将破折号解释为减号,这可能会导致问题,因为你认为是一个名称的东西会变成减法操作。

first-second  // first minus second?
ten-2 // ten minus two?

Also,一些框架解析破折号的kebab cased属性。例如,GitHub Pages使用 Jekyll,而Jekyll会解析md文件中找到的任何破折号。例如,在GitHub Pages上命名为2020-1-2-homepage.md的文件在编译网站时被放入一个结构化的文件夹中,其路径为\2020\1\2\homepage.html
Snake_case vs kebab-case 一个更安全的替代方案是snake_caseSCREAMING_SNAKE_CASE,因为下划线与减号相比引起的混淆较少。

6

没有标准化的名称。

jquerylodash这样的库将其称为kebab-caseVuejs JavaScript框架也是如此。然而,我不确定在JavaScript世界中宣布它被称为kebab-case是否安全。


5

9
“连字符”可能是对英语问题的一个很好的回答,但对于代码来说它不够具体。例如,在 kebab-case 中所有字母都是小写的。 - rybo111

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接