تنسيق الثعبان

[تصغير| قطعة من الكود من وحدة [نواة لينكس ، والتي تستخدم أحرف الثعبان للمعرفات]]
**حالة الثعبان** (التي يُكتب أحيانًا بشكل ذاتي كـ **snake_case** ) هي طريقة تسمية تُستبدل فيها كل فراغ بشرطة سفلية (_)، وتُكتب الكلمات بحروف صغيرة . تُعد هذه الطريقة شائعة الاستخدام في مجال الحوسبة ، مثل أسماء المتغيرات والبرامج الفرعية ، وأسماء الملفات . أظهرت إحدى الدراسات أن القراء يمكنهم التعرف على قيم مكتوبة بنمط الـ الثعبان بسرعة أكبر مقارنة بنمط الـ حالة الجمل . ومع ذلك، "تم تدريب المشاركين بشكل أساسي على أسلوب التسطير السفلي"، لذا لا يمكن استبعاد احتمال التحيز. 

إحدى الصور الفرعية لهذه النمط هي الـ **حالة الثعبان الصارخ** ، حيث تُكتب الكلمات بأحرف كبيرة (منمقة كـ SCREAMING_SNAKE_CASE).  تُستخدم هذه الاتفاقية للثوابت في لغات البرمجة مثل C / C++ وPython وJava وPHP ، وكذلك للمتغيرات البيئية .

## تاريخ
يعود استخدام الشرطة السفلية كفاصل بين الكلمات إلى أواخر الستينيات. ويرتبط هذا الأسلوب بشكل خاص بلغة البرمجة C، حيث ورد في كتاب *[[لغة البرمجة سي (كتاب)|لغة البرمجة C]]* الصادر عام 1978، وتمت مقارنته بنمط حالة باسكال (نوع من حالة الجمل ). ومع ذلك، لم يكن لهذه الأسلوب اسم محدد تقليديًا : يشير دليل أسلوب لغة برمجة بايثون إليها ببساطة باسم "أحرف صغيرة مع شرطات سفلية". 

ظهر مصطلحsnake_case لأول مرة ضمن مجتمع Usenet، في مجتمع Ruby في عام 2004،  حيث استخدمه Gavin Kistner، وكتب:

حتى عام 2015، لم تكن هنالك تسمية موحّدة لأنماط التسمية التي تستخدم فواصل بين الكلمات في العرّفات متعددة الكلمات، رغم أن بعض المصطلحات بدأت تُستخدم بشكل متزايد، مثل: lisp-caseو kebab-case، و SCREMING_SNAKE_CASE وغيرها.

## أمثلة
تستخدم لغات البرمجة التالية حالة الثعبان حسب الاتفاقية:

* ABAP
* Ada, مع الحروف الأولية التي ترسمت أيضًا
* C++، Boost
* C, بالنسبة لبعض الأسماء في المكتبة القياسية ، ولكن ليس لأسماء الوظائف.
* Eiffel, لأسماء الفئة والميزات
* Elixir, لأسماء Atom ، المتغير ، وأسماء الوظائف.
* Erlang, لأسماء الوظائف .
* GDScript, لأسماء المتغير والوظائف
* Java تستخدم Screaming_snake_case للثوابت النهائية الثابتة وقيم التعداد..
* Kotlinيستخدم Kotlin Screaming_snake_case للثوابت وقيم التعداد [1] 
* Magik
* OCaml, لأسماء القيمة والنوع والوحدة النمطية
* Perl, للمتغيرات المعجمية والروتين الفرعي
* Oracle SQL and PL/SQL, بالنسبة لجميع المعرفات غير المؤهلة (الجداول والأعمدة والفهارس والقيود والمتغيرات PL/SQL ، الثوابت ، الإجراءات/الوظائف ، المشغلات ، ...) ، على الرغم من أنها ليست رسمية من قبل Oracle نفسها ، لا يزال يوصي غالبية "المؤثرين" المعروفين واستخدامها في جميع أنحاء وثائق أوراق الرسمية
** يتم تمثيل جميع معرفات Snake_Case غير المُقالة داخليًا كمعرفات Screaming_snake_case.
* Prolog, لكلا الذرات (أسماء مسند ، أسماء الوظائف ، والثوابت) والمتغيرات
* Python,للأسماء المتغيرة وأسماء الوظائف وأسماء الأسلوب وأسماء الوحدة أو الحزمة (أي الملف) 
* PHP، يستخدم PHP Screaming_snake_case لثوابت الفصل
* PL/I
* R,بالنسبة للأسماء المتغيرة وأسماء الوظائف وأسماء الوسيطة ، ESP [1] ecially في النمط Tidyversee
* Ruby,لأسماء المتغير والأسلوب.
* Rust, للأسماء المتغيرة ، أسماء الوظائف ، أسماء الأسلوب ، أسماء الوحدات ، ووحدات الماكرو [1]
* Tcl
* Terraform (software),(البرمجيات) ، للموارد والمتغيرات 
* Zig,للمتغيرات 

## انظر أيضًا

* حالة الجمل ، أكثر شيوعًا في Java وC#
* حالة الكباب ، أكثر شيوعًا في LISP
* اتفاقية التسمية (البرمجة)

## المراجع


## روابط خارجية

* محول علبة الثعبان

تصنيف:نص برمجي مصدري
تصنيف:طباعة الحروف
تصنيف:اصطلاحات التسمية
تصنيف:تكبير الحروف