Text Case คืออะไร? คู่มือ Naming Conventions สำหรับนักพัฒนา
ไม่ว่าจะตั้งชื่อตัวแปร เขียนหัวข้อ หรือสร้าง CSS class รูปแบบตัวพิมพ์มีผลต่อความอ่านง่ายและความหมายในโค้ด หลาย framework และภาษาโปรแกรมมี convention ของตัวเอง
สารบัญ
Text Case คืออะไร?
Text case คือรูปแบบการใช้ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก การคั่นคำ และการเชื่อมคำ ตัวอย่างทั่วไปคือ uppercase, lowercase, title case และ sentence case
ในการเขียนโปรแกรม text case แก้ปัญหาสำคัญคือ identifier ส่วนใหญ่มีช่องว่างไม่ได้ นักพัฒนาจึงใช้ convention เช่น camelCase, snake_case และ kebab-case เพื่อรวมหลายคำให้ยังอ่านได้ง่าย
Convention เหล่านี้ไม่ใช่แค่เรื่องหน้าตา เพราะ framework, linter, database, API และภาษาโปรแกรมจำนวนมากคาดหวังรูปแบบชื่อที่เฉพาะเจาะจง
รูปแบบตัวพิมพ์พื้นฐาน
ก่อนดูรูปแบบเฉพาะสำหรับโปรแกรม มาดู case พื้นฐานที่ใช้ในงานเขียนและ UI:
| Case | ตัวอย่าง | ใช้เมื่อไร |
|---|---|---|
| lowercase | the quick brown fox | อีเมล URL CSS properties และข้อความในโค้ดส่วนใหญ่ |
| UPPERCASE | THE QUICK BROWN FOX | ตัวย่อ การเน้น constants และหัวข้อสั้น ๆ |
| Title Case | The Quick Brown Fox | พาดหัว ชื่อหนังสือ และหัวข้อทางการ |
| Sentence case | The quick brown fox | เนื้อหา คำอธิบาย และ UI labels |
| iNVERSE cASE | tHE qUICK bROWN fOX | ข้อความสร้างสรรค์ meme text และแทบไม่ใช้ในงานมืออาชีพ |
Title case เทียบกับ sentence case
Design system แต่ละแบบเลือกไม่เหมือนกัน บางระบบใช้ Title Case กับปุ่มและเมนู บางระบบใช้ sentence case เพื่อให้ UI ดูเรียบกว่า สิ่งสำคัญคือใช้ให้สม่ำเสมอ
Naming Conventions ในการเขียนโปรแกรม
Naming convention ในโปรแกรมตอบคำถามว่า ถ้าชื่อมีหลายคำแต่ห้ามมีช่องว่าง เราจะเขียนอย่างไรให้อ่านง่าย
The phrase "get user profile" becomes:
camelCase: getUserProfile
PascalCase: GetUserProfile
snake_case: get_user_profile
kebab-case: get-user-profile
CONSTANT_CASE: GET_USER_PROFILE
dot.case: get.user.profileแต่ละ convention มีเหตุผลของมัน การเลือกใช้ขึ้นอยู่กับภาษา framework และชนิดของ identifier
camelCase
camelCase เริ่มด้วยตัวพิมพ์เล็ก และขึ้นต้นคำถัดไปด้วยตัวพิมพ์ใหญ่ เป็นรูปแบบหลักสำหรับตัวแปรและฟังก์ชันใน JavaScript และ ecosystem ใกล้เคียง
พบได้บ่อยใน JavaScript, TypeScript, methods/variables ใน Java, Swift, Kotlin และ JSON API จำนวนมาก
// JavaScript / TypeScript
const firstName = "Alice";
const lastName = "Smith";
const isLoggedIn = true;
function getUserProfile(userId) { ... }
function calculateTotalPrice(items) { ... }
function handleFormSubmit(event) { ... }
// React event handlers
onClick, onChange, onSubmit, onKeyDown
// JSON keys by convention
{ "firstName": "Alice", "lastName": "Smith" }PascalCase
PascalCase ขึ้นต้นทุกคำด้วยตัวพิมพ์ใหญ่ ใช้บ่อยกับ classes, types, constructors, enums และ React components
ใน React ชื่อ component ต้องขึ้นต้นด้วยตัวพิมพ์ใหญ่ ถ้า JSX tag เป็นตัวพิมพ์เล็ก React จะตีความเป็น HTML element ไม่ใช่ custom component
// Classes
class UserProfile { ... }
class ShoppingCart { ... }
class HttpRequestHandler { ... }
// React components
function NavigationBar() { return <nav>...</nav>; }
function UserAvatar({ name }) { return <img alt={name} />; }
<SearchableToolGrid />
<ThemeToggle />
// TypeScript interfaces and types
interface UserSettings { ... }
type ApiResponse<T> = { data: T; error?: string };snake_case
snake_case ใช้ underscore คั่นคำและมักใช้ตัวพิมพ์เล็กทั้งหมด เป็น style ทางการของ Python สำหรับ functions และ variables ตาม PEP 8
ยังพบได้ใน Ruby, Rust, SQL, database columns, backend APIs จำนวนมาก และ config files
# Python
first_name = "Alice"
last_name = "Smith"
is_logged_in = True
def get_user_profile(user_id):
...
def calculate_total_price(items):
...
# SQL columns
SELECT first_name, last_name, created_at
FROM user_accounts
WHERE is_active = true;kebab-case
kebab-case ใช้ hyphen คั่นคำ นิยมใน URL, CSS class names, HTML attributes, file names และ route paths
ภาษาโปรแกรมส่วนใหญ่ใช้ kebab-case กับตัวแปรไม่ได้ เพราะ hyphen จะถูกตีความเป็นเครื่องหมายลบ
/* CSS */
.user-profile-card { ... }
.main-navigation { ... }
.is-loading { ... }
<!-- HTML data attributes -->
<button data-user-id="42" aria-label="Open menu">
// URL slugs
/blog/what-is-text-case
/tools/text-case-converterCONSTANT_CASE
CONSTANT_CASE หรือ UPPER_SNAKE_CASE ใช้ตัวพิมพ์ใหญ่กับ underscore เพื่อบอกด้วยสายตาว่าค่านี้ไม่ควรถูกเปลี่ยน
เป็น convention ที่แทบจะใช้ร่วมกันทุกภาษา สำหรับ constants และ environment variables
// JavaScript
const MAX_RETRY_COUNT = 3;
const API_BASE_URL = "https://api.example.com";
const HTTP_STATUS_OK = 200;
# Python
MAX_CONNECTIONS = 100
DEFAULT_TIMEOUT = 30
DATABASE_URL = "postgresql://localhost/mydb"
// Environment variables
NODE_ENV=production
DATABASE_URL=postgres://...
NEXT_PUBLIC_API_KEY=abc123Case รูปแบบพิเศษอื่น ๆ
นอกจากรูปแบบหลัก ยังมี case พิเศษที่อาจพบได้:
| Case | ตัวอย่าง | ใช้ที่ไหน |
|---|---|---|
| dot.case | user.first.name | Java package names, property keys และ configuration paths |
| path/case | user/first/name | file paths และ route definitions |
| flatcase | userfirstname | package names และ identifiers แบบสั้น |
| COBOL-CASE | USER-FIRST-NAME | COBOL และ headers สไตล์ HTTP |
| aLtErNaTiNg CaSe | tHe QuIcK bRoWn | meme text และ sarcasm notation |
Naming Conventions แยกตามภาษา
ภาษาโปรแกรมหลักแต่ละภาษามี convention ของ ecosystem ตัวเอง การใช้ให้ถูกช่วยให้โค้ดอ่านเป็นธรรมชาติสำหรับนักพัฒนาคนอื่น
| ภาษา | Variables / Functions | Classes / Types | Constants |
|---|---|---|---|
| JavaScript / TypeScript | camelCase | PascalCase | CONSTANT_CASE |
| Python | snake_case | PascalCase | CONSTANT_CASE |
| Java | camelCase | PascalCase | CONSTANT_CASE |
| C# | camelCase private, PascalCase public | PascalCase | PascalCase หรือ CONSTANT_CASE |
| Go | camelCase private, PascalCase exported | PascalCase | PascalCase หรือ CONSTANT_CASE |
| Ruby | snake_case | PascalCase | CONSTANT_CASE |
| Rust | snake_case | PascalCase | CONSTANT_CASE |
| PHP | camelCase หรือ snake_case | PascalCase | CONSTANT_CASE |
| CSS | kebab-case | - | --kebab-case custom properties |
กฎพิเศษของ Go
ใน Go ตัวพิมพ์มีความหมายจริง ชื่อที่ขึ้นต้นด้วยตัวพิมพ์ใหญ่จะ exported ออกจาก package ส่วนชื่อที่ขึ้นต้นด้วยตัวพิมพ์เล็กจะ private ภายใน package
การแปลงระหว่าง Case
การแปลง case มักมี 2 ขั้นตอนหลัก คือแยกข้อความเป็นคำ แล้วรวมคำกลับตามกฎของรูปแบบเป้าหมาย
- แยกด้วยช่องว่าง underscore hyphen punctuation หรือขอบเขตตัวพิมพ์ใหญ่
- ปรับคำให้เป็นมาตรฐาน เช่น แปลงเป็นตัวพิมพ์เล็ก
- รวมคำเป็น camelCase, PascalCase, snake_case, kebab-case หรือรูปแบบอื่น
Input: "getUserProfile"
Step 1: split into words
["get", "user", "profile"]
Step 2: join with the target format
snake_case: get_user_profile
kebab-case: get-user-profile
PascalCase: GetUserProfile
CONSTANT_CASE: GET_USER_PROFILEJavaScript
// camelCase to snake_case
"getUserProfile"
.replace(/([A-Z])/g, "_$1")
.toLowerCase()
.replace(/^_/, "");
// "get_user_profile"
// snake_case to camelCase
"get_user_profile"
.replace(/_([a-z])/g, (_, c) => c.toUpperCase());
// "getUserProfile"
// Any simple case to kebab-case
"getUserProfile"
.replace(/([A-Z])/g, "-$1")
.toLowerCase()
.replace(/^-/, "");
// "get-user-profile"API
// API response from a Python/Ruby backend
{
"user_id": 42,
"first_name": "Alice",
"last_name": "Smith",
"is_active": true,
"created_at": "2026-01-15"
}
// Frontend JavaScript object
{
userId: 42,
firstName: "Alice",
lastName: "Smith",
isActive: true,
createdAt: "2026-01-15"
}แนวทางปฏิบัติที่ดี
- ทำตาม convention ของภาษา เพื่อให้โค้ดดูเป็นธรรมชาติใน ecosystem นั้น
- ใช้ให้สม่ำเสมอในโปรเจกต์ การปนหลาย convention ทำให้อ่านยากกว่าการใช้ convention เดียวแม้จะไม่สมบูรณ์แบบ
- ใช้ linter หรือ formatter เพื่อบังคับ naming rules อัตโนมัติ
- ทำตาม framework: React components ใช้ PascalCase, CSS classes มักใช้ kebab-case, database columns มักใช้ snake_case
- จัดการตัวย่อให้ชัดเจน ตกลงว่าจะใช้ getURLParser หรือ getUrlParser แล้วบันทึกกฎไว้
- เขียน convention ของทีมไว้ ใน style guide หรือ contributing file
แปลง Text Case ได้ทันที
ใช้เครื่องมือ Text Case Converter ฟรีของเราเพื่อแปลงข้อความระหว่าง camelCase, PascalCase, snake_case, kebab-case, Title Case และรูปแบบอื่น ๆ ได้ทันทีในเบราว์เซอร์
ลองใช้ Text Case Converterแหล่งอ้างอิง
- Van Rossum, G., Warsaw, B., & Coghlan, A. PEP 8 - Style Guide for Python Code. https://peps.python.org/pep-0008/
- Google. Google JavaScript Style Guide. https://google.github.io/styleguide/jsguide.html
- Microsoft. C# Naming Conventions. https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/identifier-names
- The Go Authors. Effective Go - Names. https://go.dev/doc/effective_go#names
- Rust Team. Rust API Guidelines - Naming. https://rust-lang.github.io/api-guidelines/naming.html