บทความทั้งหมด

camelCase, snake_case, kebab-case: ควรใช้รูปแบบไหนเมื่อไหร่

ภาษาไทยไม่มีแนวคิดเรื่องตัวพิมพ์ใหญ่-เล็กเลย และยิ่งไปกว่านั้น การเขียนภาษาไทยตามปกติไม่มีการเว้นวรรคระหว่างคำด้วยซ้ำ — คำต่อคำเรียงติดกันเป็นประโยคยาว ๆ โดยอาศัยความเข้าใจภาษาของผู้อ่านในการแบ่งคำ ไม่ใช่สัญลักษณ์ทางสายตาแบบตัวพิมพ์ใหญ่ที่ภาษาละตินใช้บอกจุดเริ่มต้นคำใหม่ (เช่นใน camelCase)

รูปแบบหลัก

  • camelCase — คำแรกเป็นตัวพิมพ์เล็ก คำถัดไปขึ้นต้นด้วยตัวพิมพ์ใหญ่ ไม่มีตัวคั่น: userName มาตรฐานสำหรับตัวแปรและฟังก์ชันใน JavaScript, Java, C#
  • PascalCase — เหมือนกันแต่คำแรกก็ขึ้นต้นด้วยตัวพิมพ์ใหญ่ด้วย: UserName ใช้สำหรับคลาสและคอมโพเนนต์แทบทุกที่
  • snake_case — คำเชื่อมด้วยขีดล่าง ทั้งหมดเป็นตัวพิมพ์เล็ก: user_name มาตรฐานใน Python และชื่อคอลัมน์ฐานข้อมูล
  • kebab-case — คำเชื่อมด้วยขีดกลาง: user-name มาตรฐานสำหรับ URL, คลาส CSS และแอตทริบิวต์ HTML เพราะขีดล่างพบได้น้อยกว่าใน URL

ทำไมนี่ไม่ใช่แค่เรื่องความสวยงาม

เพราะการแบ่งคำในข้อความไทยจริง ๆ ต้องอาศัยพจนานุกรมหรือแบบจำลองภาษา ไม่ใช่การไล่หาจุดที่ตัวพิมพ์เปลี่ยนแบบที่เครื่องมือนี้ทำกับ XMLParser เครื่องมือแปลงเคสจึงใช้ได้จริงเฉพาะกับ identifier ที่เขียนด้วยอักษรละติน (เช่นคำแปลอักษรของคำไทยเป็นอังกฤษ) ไม่ใช่กับข้อความภาษาไทยที่เขียนด้วยอักษรไทยโดยตรง

ทำไมต้องใช้การแปลงนี้

  • จับคู่ฟิลด์จาก JSON API (มักเป็น camelCase) กับชื่อคอลัมน์ฐานข้อมูล (มักเป็น snake_case)
  • เปลี่ยนชื่อตัวแปรเมื่อย้ายโค้ดจากภาษาหนึ่งไปอีกภาษาที่มีธรรมเนียมต่างกัน
  • สร้างชื่อที่ใช้ได้กับ URL หรือคลาส CSS จากข้อความหัวข้อที่ทับศัพท์เป็นอักษรละตินแล้ว

ความกำกวมกับตัวย่อ

Identifier อย่าง userID หรือ XMLParser ทำให้ตัวแปลงต้องเลือก: จะถือว่าตัวย่อนั้นเป็น "คำ" เดียว หรือแยกเป็นตัวอักษรทีละตัว เครื่องมือแต่ละตัวจัดการเรื่องนี้ต่างกัน — เครื่องมือนี้จะรู้จักลำดับตัวพิมพ์ใหญ่ติดกันว่าเป็นคำแยก (XMLParserXML + Parser) แต่ควรตรวจผลลัพธ์ด้วยตาเปล่าหากชื่อนั้นจะถูกนำไปใช้ในโค้ด production ทันที

ลองใช้เครื่องมือ