نگارش ماری

**نگارش ماری** (، گاه به‌صورت خودبازنمایانه **snake_case**) یک قرارداد نام‌گذاری در رایانش است که در آن فاصله‌های میان واژه‌ها با نویسهٔ زیرخط (_) جایگزین می‌شوند و همهٔ حروف به‌صورت کوچک نوشته می‌شوند. این قرارداد کاربرد گسترده‌ای در نام‌گذاری متغیرها، زیربرنامه‌ها و نام پرونده‌ها دارد. پژوهشی نشان داده است که خوانندگان مقادیر نوشته‌شده به شیوهٔ نگارش ماری را سریع‌تر از نگارش شتری تشخیص می‌دهند؛ هرچند شرکت‌کنندگان آن پژوهش عمدتاً با شیوهٔ زیرخط آموزش دیده بودند و امکان سوگیری را نمی‌توان رد کرد.

یکی از گونه‌های آن **نگارش ماری فریادی** () است که در آن همهٔ حروف به‌صورت بزرگ نوشته می‌شوند (مانند SCREAMING_SNAKE_CASE). این گونه معمولاً برای ثابت‌ها در زبان‌های برنامه‌نویسی مانند سی، C++، پایتون، جاوا و پی‌اچ‌پی و نیز برای متغیرهای محیطی به کار می‌رود.

## تاریخچه
استفاده از زیرخط به‌عنوان جداکنندهٔ واژه‌ها به اواخر دههٔ ۱۹۶۰ میلادی بازمی‌گردد. این شیوه به‌ویژه با زبان سی پیوند دارد و در کتاب «زبان برنامه‌نویسی سی» (۱۹۷۸) به کار رفته است. با وجود این، این قرارداد تا مدت‌ها نام مشخصی نداشت؛ برای نمونه راهنمای سبک زبان پایتون آن را صرفاً «lower_case_with_underscores» می‌نامد.

اصطلاح «snake_case» نخستین بار در سال ۲۰۰۴ میلادی در جامعهٔ روبی در یوزنت توسط گوین کیستنر به کار رفت. او نوشت: «راستی… شما این شیوهٔ نام‌گذاری را چه می‌نامید؟ snake_case؟ تا وقتی کسی اصلاحم نکرده همین را به کار می‌برم.»

## نحوهٔ نوشتار
در نگارش ماری هر عبارت چندکلمه‌ای با حذف فاصله‌ها و جایگزینی آن‌ها با زیرخط و تبدیل همهٔ حروف به حروف کوچک نوشته می‌شود:

* «variable name» → **variable_name**
* «VariableNamePascalCase» → **variable_name_pascal_case**
* «Variable» → **variable**

در گونهٔ فریادی (SCREAMING_SNAKE_CASE) همهٔ حروف بزرگ نوشته می‌شوند؛ مانند **JE_SUIS_UNE_CONSTANTE** یا **MAX_BUFFER_SIZE**.

## خوانایی
پژوهشی در سال ۲۰۱۰ با استفاده از ردیابی چشم نشان داد که شناسه‌های نوشته‌شده به شیوهٔ نگارش ماری سریع‌تر از نگارش شتری شناسایی می‌شوند؛ اما از آن‌جا که آزمودنی‌ها عمدتاً با شیوهٔ زیرخط آموزش دیده بودند، احتمال سوگیری در نتایج وجود دارد.

## زبان‌های برنامه‌نویسی
زبان‌های برنامه‌نویسی زیر بر پایهٔ قرارداد از نگارش ماری استفاده می‌کنند:

* آباپ — برای نام‌گذاری شناسه‌ها
* ایدا — با بزرگ‌نویسی حرف آغازین هر واژه
* سی — برای برخی نام‌های نوع در کتابخانهٔ استاندارد
* C++ — در کتابخانه استاندارد سی++ و بوست
* ایفل — برای نام کلاس‌ها و ویژگی‌ها
* الیکسیر — برای اتم‌ها، متغیرها و توابع
* ارلنگ — برای نام توابع
* جاوا — از SCREAMING_SNAKE_CASE برای ثابت‌های ایستای نهایی و مقادیر شمارشی
* پایتون — برای نام متغیرها، توابع، متدها و ماژول‌ها
* پرل — برای متغیرهای واژگانی و زیربرنامه‌ها
* پی‌اچ‌پی — از SCREAMING_SNAKE_CASE برای ثابت‌های کلاس
* پی‌ال/۱
* پرولوگ — برای اتم‌ها و متغیرها
* روبی — برای متغیرها و متدها
* راست — برای نام متغیرها، توابع، متدها، ماژول‌ها و ماکروها
* آر — به‌ویژه در سبک تایدیورس
* اکمل — برای نام مقادیر، نوع‌ها و ماژول‌ها
* اوراکل SQL و پی‌ال/اس‌کیوال — برای همهٔ شناسه‌های بدون نقل‌قول
* تی‌سی‌ال
* ترافرم — برای منابع و متغیرها
* زیگ — برای متغیرها

## قراردادهای مشابه
نگارش ماری تنها یکی از شیوه‌های نام‌گذاری شناسه‌های چندکلمه‌ای در برنامه‌نویسی است. از جمله قراردادهای مشابه می‌توان به موارد زیر اشاره کرد:

* **[[نگارش شتری]]** (camelCase) — که در جاوا و سی‌شارپ رایج‌تر است.
* **نگارش کبابی** (kebab-case) — که در آن به‌جای زیرخط از خط تیره استفاده می‌شود و در لیسپ متداول است.

تا سال ۲۰۱۵ نام‌گذاری بسیاری از این شیوه‌ها هنوز استانداردسازی نشده بود؛ هرچند اصطلاحاتی مانند lisp-case و kebab-case و SCREAMING_SNAKE_CASE کاربرد فزاینده‌ای یافته‌اند.

## جستارهای وابسته
* نگارش شتری
* قرارداد نام‌گذاری (برنامه‌نویسی)

## منابع


## پیوند به بیرون
* ابزار تبدیل به نگارش ماری

رده:تایپوگرافی
رده:قراردادهای نامگذاری
رده:کد منبع