Tên của trường hợp phân tách dấu gạch nối là gì?


509

Đây là PascalCase: SomeSymbol

Đây là camelCase: someSymbol

Đây là sn_case: some_symbol

Vì vậy, câu hỏi của tôi là liệu có một tên được chấp nhận rộng rãi cho điều này : some-symbol? Nó thường được sử dụng trong url.


11
Không. Hầu hết các ngôn ngữ không cho phép nhận dạng như vậy. Ngoài ra cái đầu tiên được gọi là trường hợp Pascal.
Cat Plus Plus


14
@CatPlusPlus Lisp sử dụng trường hợp này và vì Google coi -một khoảng trống là gần như mọi URL thân thiện với SEO cũng sử dụng nó.
lms

4
Tôi tin rằng việc gọi ví dụ đầu tiên mà bạn đặt theo tên PascalCase là phổ biến hơn .
Drew Noakes

24
@CatPlusPlus 1) URL KHÔNG liên quan đến ngôn ngữ lập trình. Chúng là một trong những ngôn ngữ lập trình tài nguyên thường xuyên nhất sử dụng. Một số ngôn ngữ thậm chí coi URL là một đối tượng hạng nhất. Trong Go, trong khi không phải là hạng nhất, URL được sử dụng để nhập các gói. 2) Chuỗi phân tách dấu gạch ngang khá phổ biến trong một số ngôn ngữ (họ LISP cho một ngôn ngữ) và cả các ngôn ngữ lo lắng được sử dụng trong lập trình, như CSS. Bạn là "thiểu số" đối với bạn, đó là ngôn ngữ mà người khác làm việc cả ngày lẫn ngày. Chúng tôi không phải là tất cả các lập trình viên VB6.
Hejazzman

Câu trả lời:


433

Thực sự không có một tên tiêu chuẩn cho quy ước trường hợp này và có sự bất đồng về những gì nó nên được gọi.

Điều đó nói rằng, kể từ năm 2019, có một trường hợp mạnh mẽ được đưa ra rằng trường hợp kebab đang chiến thắng:

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

trường hợp cột sống là một giây xa, và không có điều khoản khác có bất kỳ lực kéo nào cả.

Ngoài ra, trường hợp kebab đã nhập từ vựng của một số thư viện mã javascript, ví dụ:

Tuy nhiên, vẫn còn những thuật ngữ khác mà mọi người sử dụng. Lisp đã sử dụng quy ước này trong nhiều thập kỷ như được mô tả trong mục Wikipedia này , vì vậy một số người đã mô tả nó là trường hợp không thể thiếu . Một số hình thức khác mà tôi đã nhìn thấy bao gồm sâu bướm hợp cụ thể , dấu gạch ngang hợp cụ thể , và gạch nối hợp cụ thể , nhưng không ai trong số này là tiêu chuẩn.

Vì vậy, câu trả lời cho câu hỏi của bạn là: Không, không có một tên nào được chấp nhận rộng rãi cho trường hợp này tương tự như Snake_case hoặc camelCase , được chấp nhận rộng rãi.


118
Bài viết wikipedia được liên kết hiện có một tài liệu tham khảo liên kết trở lại câu hỏi tràn ngăn xếp này ... cụ thể là câu hỏi về trường hợp kebab. Có lẽ sử dụng wikipedia làm nguồn không phải là một ý tưởng thông minh.
dequis

8
@BenLee Tôi là người bạn cảm thấy bị đánh cắp bản sao - xin lỗi. Lưu ý rằng trường hợp cột sống / Trường hợp tàu hỏa đã được thêm vào Wikipedia vào ngày 2012-10-07 mà không có người dùng ẩn danh tham khảo từ địa chỉ IP mà không có lịch sử Wikipedia khác. Tôi không thể tìm thấy bất kỳ bằng chứng nào khác cho những điều khoản không quay trở lại Wikipedia. Mặt khác, tôi cảm thấy câu hỏi StackOverflow này đã đưa ra bằng chứng cho thấy trường hợp kebab có một cộng đồng người dùng không phụ thuộc vào thứ gì đó được đưa vào bài viết Wikipedia mà không có bằng chứng. Tôi hy vọng đó là đủ để tránh phí nghiên cứu ban đầu.
Robert Tupelo-Schneck

7
Tôi đã cố gắng loại bỏ hoàn toàn trường hợp cột sống và Trường hợp tàu hỏa (như có khả năng phá hoại); nhưng có lẽ sự phá hoại Wikipedia từ lâu thực sự có thể tạo ra bằng chứng cho chính nó. Đó là những gì dường như đã xảy ra ở đây.
Robert Tupelo-Schneck

11
Tôi thích "trường hợp catipillar" vì nó bị cắt xén và sau đó dài, và phù hợp với chủ đề động vật
RenaissanceProgrammer

55
kebab-case-bởi vì nó trông giống như những từ ngữ bị
sai lệch

464

Nó được gọi là trường hợp kebab . Xem tài liệu lodash .


190
Đây là một tài liệu tham khảo , làm cho nó chính thức;)
Andreas

13
Đây là một tài liệu tham khảo khác: github.com/qerub/camel-snake-kebab ;)
qerub

11
Đệ quy trong tài liệu tham khảo có nghĩa là nó giống Lisp hơn nhiều.
Michael Della Bitta

140
Tôi ủng hộ câu trả lời này không phải vì tôi tin rằng đó là câu trả lời đúng, mà vì tôi muốn nó là câu trả lời đúng.
Jason Swett

43
Tôi yêu sự hình thành đang diễn ra ở đây. Câu trả lời này liên kết đến lodash liên kết đến wikipedia liên kết đến câu trả lời này!
gilly3

37

Đôi khi nó còn được gọi là trường hợp sâu bướm


61
trường hợp sâu bướm có ý nghĩa hơn nhiều so với trường hợp kebab, bởi vì lạc đà, rắn và sâu bướm là tất cả các loại sinh vật sống trong khi kebab thì không.
Daira Hopwood


4
Vì "sâu bướm" có bốn âm tiết trong khi "kebab", "dash" và "gạch nối" có một hoặc hai, tôi nghĩ rằng tranh luận về trường hợp sâu bướm là một trận thua
Ninjakannon

1
"Trường hợp sâu bướm" quá dài để trở thành một trường hợp tên, tôi nghĩ "trường hợp sâu" sẽ là lựa chọn tốt hơn. : D
Bahattin Ungormus

5
@DairaHopwood hoàn toàn đồng ý .. Pascal cũng là một sinh vật sống.
nawfal


12

Vì ký tự (-) được gọi là "gạch nối" hoặc "dấu gạch ngang", nên đặt tên cho " trường hợp gạch ngang " này hoặc " trường hợp gạch nối " " (ít được sử dụng hơn).

Như đã đề cập trong Wikipedia , " kebab-case " cũng được sử dụng. Rõ ràng (xem câu trả lời ) điều này là do nhân vật sẽ trông giống như một xiên ... Mặc dù vậy, nó cần một số trí tưởng tượng.
Được sử dụng trong lib lodash chẳng hạn.

Gần đây, " dash-case " đã được sử dụng bởi


6
Trường hợp kebab đề cập đến shish-kebab nhiều hơn là với döner kebab nếu đó là bất kỳ trợ giúp.
Alper

10

Tôi đã luôn gọi nó và nghe thấy nó được gọi là 'dashcase'.


21
Nó sẽ mãi mãi được gọi là Trường hợp
Dashash McDash

15
@colllin Tôi nghĩ bạn có nghĩa là dashy-mcdash-case;)
siguy85

7

Danh sách đầy đủ sau một số nghiên cứu:

  • Vỏ Kebab
  • Trường hợp sâu bướm
  • Trường hợp dấu gạch ngang
  • Trường hợp gạch nối
  • Trường hợp Lisp
  • Trường hợp cột sống
  • Trường hợp CSS

6

Không có tên tiêu chuẩn.

Các thư viện như jquerylodash gọi nó là kebab-case. Khung javascript của Vuejs cũng vậy . Tuy nhiên, tôi không chắc liệu có an toàn không khi tuyên bố rằng nó được gọi là kebab-casetrong thế giới javascript.


Như thế này nếu bạn đến đây từ tài liệu của
Vuejs

5

Tôi chỉ đơn giản nói rằng nó đã được gạch nối .


8
Hyphenated có thể là một câu trả lời tốt cho một câu hỏi tiếng Anh, nhưng đối với mã thì nó không đủ cụ thể. Ví dụ, trong kebab-casetất cả các chữ cái là chữ thường.
rybo111



2

Đây là một sự thất vọng gần đây hơn. Tài liệu ở khắp mọi nơi trong các khóa học về JS và Pluralsight góc cạnh và các cuốn sách về góc cạnh, tất cả đều đề cập đến trường hợp kebab là trường hợp rắn, không phân biệt giữa hai.

Vỏ sâu bướm quá xấu của nó không dính vì vỏ rắn và vỏ sâu bướm dễ nhớ và thực sự trông giống như những gì chúng thể hiện (nếu bạn có trí tưởng tượng tốt).


1

Đề xuất ECMAScript của tôi cho String.prototype.toKebabCase.

String.prototype.toKebabCase = function () {
  return this.valueOf().replace(/-/g, ' ').split('')
    .reduce((str, char) => char.toUpperCase() === char ?
      `${str} ${char}` :
      `${str}${char}`, ''
    ).replace(/ * /g, ' ').trim().replace(/ /g, '-').toLowerCase();
}

bất kỳ phản ứng với đề xuất?
nxmohamad

bất kỳ phản ứng với phản ứng của bạn?
Dane Brouwer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.