camelCase، snake_case و kebab-case: کدام بهتر است؟
camelCase برای JavaScript، snake_case برای Python و پایگاهداده، kebab-case برای CSS و URL. ببینید هر قرارداد کجا به کار میرود.
منتشر شده در · زمان مطالعه: 5 دقیقه
camelCase در برابر snake_case در برابر kebab-case بیشتر پرسش این است که نام کجا زندگی میکند. JavaScript و Java از camelCase استفاده میکنند (firstName)، Python و Ruby و SQL از snake_case (first_name)، و CSS، ویژگیهای HTML و URLها از kebab-case (first-name). قرارداد زبان و راهنمای سبک تیم خود را دنبال کنید. برای تبدیل متن بین حالتهای مختلف، مبدل رایگان حروف و تولیدکننده رایگان اسلاگ URL بیشتر کار را در مرورگر شما انجام میدهند.
camelCase در برابر snake_case در برابر kebab-case در یک نگاه
| سبک | مثال | کجا دیده میشود |
|---|---|---|
| camelCase | userFirstName |
متغیرها و توابع JavaScript و TypeScript، متدهای Java، JSON از بسیاری از APIهای وب |
| PascalCase | UserFirstName |
نام کلاسها در بیشتر زبانها، کامپوننتهای React، متدهای C# |
| snake_case | user_first_name |
متغیرها و توابع Python، Ruby، نام ستونهای SQL، و بسیاری از APIهای JSON |
| SCREAMING_SNAKE_CASE | USER_FIRST_NAME |
ثابتها در بسیاری از زبانها، متغیرهای محیطی |
| kebab-case | user-first-name |
ویژگیها و نام کلاسهای CSS، ویژگیهای HTML، URLها، نام فایلها، پرچمهای CLI |
نامها از شکلشان میآیند: camelCase برآمدگیهایی از حروف بزرگ دارد، snake_case روی زیرخطها صاف میخوابد، و کلمات kebab-case روی خطتیرهها سیخ کشیده شدهاند.

زبان به زبان
JavaScript و TypeScript. متغیرها و توابع camelCase هستند (getUserName)، کلاسها و کامپوننتهای React بهصورت PascalCase (UserCard)، و ثابتها اغلب SCREAMING_SNAKE_CASE (MAX_RETRIES). توابع داخلی خود زبان هم همین قاعده را دارند، مثل getElementById و toLowerCase.
Python. PEP 8، راهنمای سبک Python، برای توابع، متغیرها و نام ماژولها از snake_case، برای کلاسها از CapWords (یعنی PascalCase)، و برای ثابتها از حروف بزرگ با زیرخط استفاده میکند. نوشتن getUserName در Python کار میکند، اما برای هر توسعهدهنده Python که آن را بخواند عجیب به نظر میرسد.
CSS و HTML. ویژگیهای CSS بهصورت kebab-case هستند (background-color، font-size)، و بیشتر سیستمهای نامگذاری کلاس هم همین را دنبال میکنند (.nav-item، .card-title). ویژگیهای data- در HTML هم kebab-case هستند و مرورگرها آنها را برای JavaScript تبدیل میکنند: data-user-id میشود element.dataset.userId. همین یک خط خلاصه خوبی است از اینکه چرا هر دو قرارداد وجود دارند.
SQL و پایگاهدادهها. نام ستونها و جدولها معمولاً snake_case هستند (created_at، order_items). بسیاری از پایگاهدادهها نامهای بدون نقلقول را به یک حالت تبدیل میکنند، پس createdAt ممکن است بیصدا به createdat تبدیل شود، مگر اینکه هر بار آن را در نقلقول بنویسید. snake_case این مشکل را پیش نمیآورد.
URLها و نام فایلها. از kebab-case استفاده کنید. راهنمای ساختار URL گوگل استفاده از خطتیره بهجای زیرخط برای جدا کردن کلمات را توصیه میکند، چون خطتیره مرز کلمات را واضح نشان میدهد. حروف کوچک هم از لینکهای خراب روی سرورهایی که About.html و about.html را دو فایل جدا میدانند جلوگیری میکند. اسلاگ URL چیست و بهترین روشهای اسلاگ URL را ببینید.
JSON و APIها. قانون واحدی وجود ندارد. بسیاری از APIهای متمرکز بر JavaScript از camelCase استفاده میکنند و بسیاری از بکاندهای Python یا Ruby از snake_case. برای هر API یکی را انتخاب کنید و هرگز در یک پاسخ آنها را مخلوط نکنید.
کدام راحتتر خوانده میشود؟
هر سه وقتی به آنها عادت کنید خوانا هستند. چند تفاوت عملی:
- snake_case و kebab-case فاصلهای واضح بین کلمات نگه میدارند، که برای نامهای بلند و اختصارها کمک میکند (
html_parserدر برابرhtmlParserدر برابرHTMLParser). - camelCase کوتاهتر است و کاراکتر اضافه لازم ندارد.
- kebab-case در بیشتر زبانها برای نام متغیر قابل استفاده نیست، چون
user-nameبهصورت «user منهای name» خوانده میشود. - دوبار کلیک در بیشتر ویرایشگرها کل نام snake_case یا camelCase را انتخاب میکند، اما در kebab-case معمولاً روی خطتیرهها متوقف میشود.
قاعده واقعی سازگاری است. فایلی که userName، user_name و UserName را با هم دارد، سختتر خوانده میشود از هر سبکی که در همه جا یکسان استفاده شود.
تبدیل بین حالتها
وقتی داده را بین لایهها منتقل میکنید باید تبدیل کنید: created_at یک API پایتونی به createdAt در JavaScript، عنوان یک صفحه به URL، یا نام یک تنظیم به یک متغیر محیطی.
به kebab-case یا snake_case: از تولیدکننده اسلاگ استفاده کنید. کلمات را، هر نام در یک خط، وارد کنید و برای kebab-case گزینه خطتیره (-) یا برای snake_case گزینه زیرخط (_) را انتخاب کنید. همه چیز را کوچک میکند، حروف دارای نشانه را به حروف ساده تبدیل میکند و نمادها را حذف میکند. هر نمادی را مرز کلمه در نظر میگیرد، پس user_first_name به user-first-name تبدیل میشود و برعکس. اما camelCase را جدا نمیکند: userFirstName میشود userfirstname. ابتدا بین کلمات فاصله بگذارید.
به SCREAMING_SNAKE_CASE. ابتدا نسخه snake_case را در تولیدکننده اسلاگ بسازید، سپس آن را در مبدل رایگان حروف جایگذاری کنید و روی حروف بزرگ کلیک کنید. در جهت برعکس، حروف کوچک مثلاً MAX_RETRIES را به max_retries تبدیل میکند.
به camelCase یا PascalCase. دکمه یککلیکی وجود ندارد. سریعترین راه: کلمات را با فاصله تایپ کنید، در مبدل حروف روی حرف اول بزرگ کلیک کنید (user first name میشود User First Name)، سپس فاصلهها را برای PascalCase حذف کنید، و برای camelCase حرف اول را کوچک کنید.
بسیاری از نامها با هم، داخل کد. برای تغییر نام گسترده، از جایگزینی ویرایشگر با عبارت منظم استفاده کنید. الگو را ابتدا در آزمایشگر رایگان عبارت منظم امتحان کنید: برای مثال _([a-z]) هر زیرخطی را که پس از آن یک حرف میآید پیدا میکند، یعنی جایی که snake_case برای تبدیل به camelCase باید حرف بزرگ بگیرد. بسیاری از ویرایشگرها میتوانند حرف گرفتهشده را در جایگزینی بزرگ کنند؛ نحو آن را در راهنمای ویرایشگر خود ببینید.
نکات مهم هنگام تبدیل
- اختصارها. تصمیم بگیرید که
userIdباشد یاuserID،HtmlParserیاHTMLParser، و به آن پایبند بمانید. - اعداد.
address_line_2بهدرستی تبدیل میشود؛addressLine2هم درست است؛ فقط رقم را حذف نکنید. - نامهای عمومی. تغییر نام یک فیلد JSON یا یک URL، کسانی را که از آن استفاده میکنند خراب میکند. برای URLها تغییر مسیر (redirect) اضافه کنید و در APIها نام فیلدهای قدیمی را برای مدتی کار کنند نگه دارید.
متن خود را تبدیل کنید
از مبدل رایگان حروف برای حروف بزرگ، حروف کوچک و حرف اول بزرگ، و از تولیدکننده اسلاگ برای kebab-case و snake_case استفاده کنید. هر دو در مرورگر شما اجرا میشوند و هیچ متنی که جایگذاری میکنید دستگاه شما را ترک نمیکند.
پرسشهای متداول
- تفاوت camelCase و snake_case چیست؟
- camelCase کلمات را به هم وصل میکند و هر کلمه بعد از اولی را با حرف بزرگ شروع میکند (
firstName). snake_case کلمات را با حروف کوچک نگه میدارد و با زیرخط به هم وصل میکند (first_name). - در JSON از camelCase یا snake_case استفاده کنم؟
- هر دو درست است. با زبانی که بیشتر مشتریهای شما استفاده میکنند همخوان شوید و در کل API سازگار بمانید.
- چرا CSS از kebab-case استفاده میکند؟
- CSS با نامهای ویژگی خطتیرهدار مثل
font-sizeطراحی شد و نام کلاسها معمولاً همان سبک را دنبال میکنند. خطتیره در بیشتر نام متغیرهای زبانهای برنامهنویسی مجاز نیست، و به همین دلیل JavaScript برای همان ویژگیها از camelCase استفاده میکند. - آیا kebab-case برای URL خوب است؟
- بله. گوگل توصیه میکند برای جدا کردن کلمات در URL از خطتیره استفاده شود، و حروف کوچک از مشکل حساسیت به حروف جلوگیری میکند.
- آیا مبدل حروف میتواند camelCase بسازد؟
- با یک کلیک نه. از حرف اول بزرگ استفاده کنید، سپس فاصلهها را حذف و حرف اول را کوچک کنید. برای kebab-case و snake_case از تولیدکننده اسلاگ URL استفاده کنید.
ابزارهای متن
امتحان تبدیل حالت حروف
رایگان، بدون ثبتنام، در مرورگرتان کار میکند. متن را بچسبانید و با یک کلیک آن را به حروف بزرگ، کوچک، حالت جمله، حالت عنوان یا حروف اول بزرگ تبدیل کنید، سپس آن را کپی کنید.
مفید هم هست
- تولیدکنندهی اسلاگ URLعنوان یا هر متنی را به یک اسلاگ URL تمیز و با حروف کوچک تبدیل کنید، مثل «my-first-blog-post». حروف دارای علامت به حروف ساده تبدیل میشوند (café میشود cafe)، نمادها حذف میشوند، و میتوانید کلمات کوچک را کنار بگذارید، حداکثر طول تعیین کنید یا برای کل فهرستی از عنوانها یکجا اسلاگ بسازید.
- آزمایشگر عبارت منظمعبارت منظم را روی متن آزمایش کنید و تطابقها را هنگام تایپ ببینید، با جدول گروهها و پیشنمایش جایگزینی. مطابق قواعد JavaScript است.