ชื่อสำหรับกรณีที่คั่นด้วยเครื่องหมายขีดคั่นคืออะไร


509

นี่คือ PascalCase: SomeSymbol

นี่คือ camelCase: someSymbol

นี่คือ snake_case: some_symbol

ดังนั้นคำถามของฉันคือไม่ว่าจะมีชื่อที่ได้รับการยอมรับอย่างกว้างขวางสำหรับการนี้some-symbol? มันใช้กันทั่วไปใน url ของ


11
ไม่ภาษาส่วนใหญ่ไม่อนุญาตให้ใช้ตัวระบุดังกล่าว กรณีแรกเรียกว่า Pascal case
Cat Plus Plus

4
ข้อมูลซ้ำซ้อนนี้: programmers.stackexchange.com/questions/104468/…
Pubby

14
@CatPlusPlus Lisp ใช้กรณีนี้และเนื่องจาก Google ถือว่า-เป็นพื้นที่จึงเกือบทุก URL ที่เป็นมิตรกับ SEO ก็ใช้เช่นกัน
lms

4
ผมเชื่อว่ามันเป็นเรื่องธรรมดามากที่จะเรียกตัวอย่างแรกคุณให้โดยชื่อPascalCase
Drew Noakes

24
@CatPlusPlus 1) URL ไม่เกี่ยวข้องกับภาษาการเขียนโปรแกรม เป็นหนึ่งในภาษาการเขียนโปรแกรมทรัพยากรที่ใช้บ่อยที่สุด บางภาษาใช้ URL เป็นวัตถุชั้นหนึ่ง ใน Go แม้ว่าจะไม่ใช้เฟิร์สคลาสจะใช้ URL สำหรับการนำเข้าแพ็คเกจ 2) สตริงที่คั่นด้วยเส้นประค่อนข้างบ่อยในหลายภาษา (ตระกูล LISP สำหรับหนึ่ง) และในภาษาที่ใช้ในการเขียนโปรแกรมเช่น CSS อะไรคือ "ชนกลุ่มน้อย" สำหรับคุณมันเป็นภาษาที่คนอื่นทำงานทั้งวันเข้าและออก พวกเราไม่ใช่โปรแกรมเมอร์ VB6 ทุกคน
Hejazzman

คำตอบ:


433

ไม่มีชื่อมาตรฐานสำหรับการประชุมกรณีนี้และมีความขัดแย้งในสิ่งที่ควรเรียก

ที่กล่าวว่าในปี 2019 มีกรณีที่แข็งแกร่งที่จะทำให้กรณีเคบับชนะ:

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

กระดูกสันหลังเป็นกรณีที่ห่างไกลและไม่มีเงื่อนไขใด ๆ ที่มีแรงฉุดเลย

นอกจากนี้kebab-caseยังป้อนคำศัพท์ของไลบรารีโค้ดจาวาสคริปต์หลายรายการเช่น:

อย่างไรก็ตามยังมีคำอื่น ๆ ที่ผู้ใช้ใช้อยู่ เสียงกระเพื่อมได้ใช้การประชุมนี้มานานหลายทศวรรษที่อธิบายไว้ในรายการวิกิพีเดียนี้เพื่อให้บางคนได้อธิบายว่ามันเป็นเสียงกระเพื่อมกรณี รูปแบบอื่น ๆ ที่ฉันเคยเห็น ได้แก่caterpillar-case , dash-caseและHyphen-caseแต่ไม่มีรูปแบบใดที่เป็นมาตรฐาน

ดังนั้นคำตอบสำหรับคำถามของคุณคือ: ไม่ไม่มีชื่อที่ยอมรับกันแพร่หลายสำหรับกรณีนี้ที่คล้ายกับsnake_caseหรือcamelCaseซึ่งเป็นที่ยอมรับอย่างกว้างขวาง


117
บทความวิกิพีเดียที่เชื่อมโยงในขณะนี้มีการอ้างอิงที่เชื่อมโยงกลับไปที่คำถามล้นสแต็คนี้ ... โดยเฉพาะกับคำถามเคบับ บางทีการใช้วิกิพีเดียเป็นแหล่งข้อมูลไม่ใช่ความคิดที่ฉลาด
ยกเลิกข้อตกลง

8
@BenLee ฉันเป็นคนที่คุณรู้สึกถึงการทำลายล้างสำเนาซึ่งเป็นการขอโทษ โปรดทราบว่ากระดูกสันหลัง / คดีรถไฟถูกเพิ่มไปยังวิกิพีเดียใน 2012-10-07 โดยไม่มีการอ้างอิงโดยผู้ใช้ที่ไม่ระบุชื่อจากที่อยู่ IP ที่ไม่มีประวัติวิกิพีเดียอื่น ๆ ฉันไม่พบหลักฐานอื่น ๆ สำหรับคำเหล่านั้นที่ไม่ได้กลับไปที่ Wikipedia แบบวงกลม ในทางกลับกันฉันรู้สึกว่าคำถาม StackOverflow นี้ได้เสนอหลักฐานว่ากรณีเคบับมีชุมชนของผู้ใช้ที่ไม่ได้ขึ้นอยู่กับสิ่งที่ป้อนลงในบทความ Wikipedia โดยไม่มีหลักฐาน ฉันหวังว่าจะเพียงพอที่จะหลีกเลี่ยงค่าใช้จ่ายการวิจัยดั้งเดิม
Robert Tupelo-Schneck

7
ฉันถูกล่อลวงให้เอากรณีไขสันหลังและ Train-Case ออกมาทั้งหมด แต่บางทีความป่าเถื่อนของวิกิพีเดียที่ยาวนานอาจสร้างหลักฐานให้กับตัวเองได้ นั่นคือสิ่งที่ดูเหมือนจะเกิดขึ้นที่นี่
Robert Tupelo-Schneck

11
ฉันชอบ "catipillar-case" เนื่องจากมันถูกทำให้เสียเวลาและนานและสอดคล้องกับธีมสัตว์
RenaissanceProgrammer

55
kebab-case-เพราะดูเหมือนว่าคำจะ
เบ้กับเบคอน

464

มันจะเรียกว่าสะเต๊ะกรณี ดูเอกสาร lodash


190
นี่คือข้อมูลอ้างอิงที่ทำให้เป็นทางการ;)
Andreas

13
นี่คืออีกการอ้างอิง: github.com/qerub/camel-snake-kebab ;)
qerub

11
การเรียกซ้ำในการอ้างอิงหมายความว่ามันมีลักษณะเหมือนเสียงกระเพื่อมมากขึ้น
Michael Della Bitta

140
ฉันตอบคำถามนี้ไม่ใช่เพราะฉันเชื่อว่ามันเป็นคำตอบที่ถูกต้อง แต่เพราะฉันต้องการให้เป็นคำตอบที่ถูกต้อง
Jason Swett

43
ฉันชอบcitogenesis ที่เกิดขึ้นที่นี่ คำตอบนี้เชื่อมโยงไปยังlodashซึ่งเชื่อมโยงไปยังวิกิพีเดียซึ่งลิงก์ไปยังคำตอบนี้!
gilly3

37

บางครั้งมันก็รู้จักกันในชื่อตัวหนอน


61
ตัวหนอนนั้นดูสมเหตุสมผลกว่าตัวเคบับเพราะตัวอูฐงูและตัวหนอนเป็นสิ่งมีชีวิตทุกชนิดในขณะที่ตัวเคบับไม่ได้
Daira Hopwood


4
ในขณะที่ "หนอน" มีสี่พยางค์ในขณะที่ "เคบับ", "ขีด" และ "ยัติภังค์" มีหนึ่งหรือสองฉันคิดว่าการพิจารณาคดีหนอน - คือการต่อสู้แพ้
Ninjakannon

1
"ตัวหนอน" ยาวเกินไปที่จะเป็นชื่อเคสฉันคิดว่า "ตัวหนอน" จะเป็นตัวเลือกที่ดีกว่า : D
Bahattin Ungormus

5
@DairaHopwood เห็นด้วยอย่างยิ่ง .. ปาสกาลยังเป็นสัตว์มีชีวิต
nawfal

16

เพิ่มลิงค์ที่ถูกต้องที่นี่Kebab Case

ซึ่งเป็นตัวพิมพ์เล็กทั้งหมดที่มี - แยกคำ


12

เนื่องจากอักขระ (-) ถูกอ้างถึงเป็น "ยัติภังค์" หรือ "เส้นประ" จึงเป็นเรื่องปกติที่จะตั้งชื่อ " ตัวพิมพ์ใหญ่ " หรือ " ตัวพิมพ์ใหญ่ " (ใช้น้อยกว่า)

ดังที่ได้กล่าวไว้ในWikipediaว่า " kebab-case " ก็ถูกใช้เช่นกัน เห็นได้ชัดว่า (ดูคำตอบ ) นี้เป็นเพราะตัวละครจะดูเหมือนเสียบ ... มันต้องมีจินตนาการบางอย่าง
ใช้ในlodash libเช่น

เมื่อเร็ว ๆ นี้ " เส้นประ " ถูกใช้โดย


6
กรณีเคบับหมายถึง shish-kebab มากกว่าที่จะเป็น debner kebab ถ้านั่นคือความช่วยเหลือใด ๆ
Alper

10

ฉันมักจะเรียกมันและได้ยินมันถูกเรียกว่า 'dashcase'


21
มันจะเป็นที่รู้จักตลอดกาลในฐานะ Dashy McDash Case
colllin

15
@colllin ฉันคิดว่าคุณหมายถึง dashy-mcdash-case;)
siguy85

7

รายการทั้งหมดหลังจากการวิจัย:

  • เคสเคบับ
  • เคสหนอนผีเสื้อ
  • ประกรณี
  • กรณียัติภังค์
  • กรณีเสียงกระเพื่อม
  • กรณีกระดูกสันหลัง
  • กรณี CSS

6

ไม่มีชื่อมาตรฐาน

ห้องสมุดเช่นjQueryและlodashkebab-caseอ้างว่ามันเป็น ดังนั้นเฟรมเวิร์กจาวาสคริปต์ของVuejs อย่างไรก็ตามฉันไม่แน่ใจว่ามันปลอดภัยหรือไม่ที่จะประกาศว่ามันถูกเรียกว่าkebab-caseในโลกจาวาสคริปต์


เช่นนี้ถ้าคุณมาที่นี่จาก Vuejs docs
a20

5

ผมก็จะบอกว่ามันก็ยัติภังค์


8
การใส่ยัติภังค์อาจเป็นคำตอบที่ดีสำหรับคำถามภาษาอังกฤษ แต่สำหรับโค้ดมันไม่เจาะจงพอ ตัวอย่างเช่นในkebab-caseตัวอักษรทั้งหมดเป็นตัวพิมพ์เล็ก
rybo111



2

นี่คือการรวมตัวกันล่าสุด เอกสารทุกที่ในเชิงมุม JS และ Pluralsight หลักสูตรและหนังสือเกี่ยวกับเชิงมุมทั้งหมดอ้างถึงเคบับกรณีเป็นงูกรณีไม่แตกต่างระหว่างทั้งสอง

ตัวหนอนที่แย่เกินไปไม่ได้ติดอยู่เพราะ snake_case และตัวหนอนนั้นจำได้ง่ายและดูเหมือนว่ามันจะเป็นตัวแทนของมัน (ถ้าคุณมีจินตนาการที่ดี)


1

String.prototype.toKebabCaseข้อเสนอของฉันสำหรับ ECMAScript

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();
}

ตอบสนองต่อข้อเสนอใด ๆ ?
nxmohamad

การตอบสนองต่อการตอบสนองของคุณ?
Dane Brouwer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.