Snippet (programming)
In computer programming, a snippet is a relatively small amount of source code that is stored and later inserted into a larger codebase as part of the process of writing the code. Some development tools such as a code editor or an integrated development environment (IDE) provide snippet management features to enhance productivity by allowing a developer to insert a fragment of code instead of typing it.[1]
In contrast to an abstraction construct, such as a function, a snippet is a form of copy and paste programming– a macro operation that expands the stored template text and inserts the result into the source code.[2] Snippet insertion is similar to a preprocessor macro except that it's inserting the expansion of the macro definition rather than referencing it. Changing the snippet after insertion does not affect the code as does changing the definition of a preprocessor macro. For this reason, best practice is to use a snippet only for relatively simple code such as a function prototype, control structure, or library import. A snippet is typically used when an abstraction is not available (i.e. not supported by the programming language) or not desirable (i.e. due to runtime overhead).
A development tool that provides snippet management typically provides for maintaining a catalogue of stored templates that involves operations such as view, add, delete, edit, and rename. Notable tools that support snippet management include: Eclipse, NetBeans, Visual Studio and Dreamweaver. Snippet features like completion and placeholder substitution can be used in shells such as bash and PowerShell.
Integrated development environments often supports snippet by implementing the Language Server Protocol which support snippets.[3]
Types

Snippets can be classified according to the interactivity in using it, including:
- Static
- A static snippet is fixed text that can be inserted without entering information at insertion-time.
- Dynamic
- A dynamic snippet contains placeholders for which the user may be required to enter replacement text at insertion-time.
- Scriptable
- المقطع البرمجي القابل للتنفيذ هو عبارة عن كود قابل للتنفيذ. قد يشمل دعم هذه المقاطع تشغيل أمر shell، أو توفير مربع حوار واجهة المستخدم الرسومية ، أو طرق أخرى لتفاعل المستخدم مع نظام التشغيل؛ أو تطبيقات أخرى؛ أو مكونات فرعية أخرى من التطبيق المضيف نفسه.
عنصر نائب
العنصر النائب هو جزء من مقتطف برمجي يُستبدل عند إدراجه. عادةً، يحتوي العنصر النائب على بنية ترميز خاصة تُمكّن أداة التطوير من تحديد حدود كل عنصر نائب لاستبداله. توفر بعض الأدوات واجهة مستخدم رسومية (GUI) تُمكّن المستخدم من إدخال قيم الاستبدال.
عادةً ما يتم تحديد العنصر النائب في مقتطف برمجي باستخدام صيغة خاصة، ويمكن تمييزه باسم أو رقم. يستخدم النص التالي عناصر نائبة محددة: first_name، last_name، و item:
مرحباً {% first_name %} {% last_name %} ,شحنتك المكونة من {% item %} جاهزة الآن للاستلام.شكراً لك يا {% first_name %} !باستخدام عنصر نائب مُحدد، يمكن للمقتطف البرمجي استخدام نفس قيمة الاستبدال عدة مرات. في المثال السابق، first_nameيُعد العنصر النائب مثالاً على هذا الاستخدام.
تتيح خاصية التحويل للمستخدم تحديد أن قيمة واحدة أو أكثر من القيم المُدخلة في خانة العنصر النائب يجب تكرارها وتحويلها في مواضع أخرى ضمن نص المقتطف البرمجي. على سبيل المثال، يمكن للمستخدم إدخال عنوان مستند في جزء من المقتطف، وتحديد أن عنوان المستند يجب تكراره في مواضع أخرى، بحيث يكون أول ظهور له بأحرف كبيرة، وكل ظهور لاحق بأحرف صغيرة.
مثال
يمكن ترميز خوارزمية تبديل قيم متغيرين xعلى النحو التالي:y
درجة الحرارة = س س = ص ص = درجة الحرارة
لجعل المقتطف أكثر فائدة، يتم استبدال أسماء المتغيرات بعناصر نائبة كما يلي:
temp = 1 دولار 1 دولار = 2 دولار 2 دولار = مؤقت
عند إدراج المقتطف البرمجي، قد تطلب أداة التطوير من المطور إدخال أسماء أكثر تحديدًا لاستبدال الأسماء الافتراضية. بالنسبة لـ fooو bar، يكون الكود المُدرج كالتالي:
temp = foo foo = bar بار = درجة الحرارة
إذا تم تغيير المقتطف لاحقًا، على سبيل المثال لاستخدام __tempبدلاً من temp، فلن يستخدم الكود الحالي تعريف المقتطف الجديد تلقائيًا، ولكن عمليات الإدخال اللاحقة ستفعل ذلك.
البدائل
يُعدّ استخدام الدوال بديلاً شائعاً لاستخدام المقاطع البرمجية، إذ يتميز هذا البديل بأنّ تعديل تعريف الدالة يؤثر على المستخدمين، بينما لا يؤثر تعديل المقطع البرمجي على أيٍّ من إضافاته الموجودة. وتؤكد العديد من تقنيات التطوير، مثل البرمجة الكائنية والبرمجة الوظيفية، على تجنّب تكرار التعليمات البرمجية ، وهو ما يتعارض مع استخدام المقاطع البرمجية.
ثمة بديل آخر وهو ماكرو المعالج المسبق المتوفر في لغة C والعديد من اللغات ذات الصلة.
متعلق ب
- نمط التصميم
- يُشبه نمط التصميم المقتطف البرمجي من حيث توليد الكود بدلاً من كتابته كدوال، لكن النمط يختلف عنه في نطاقه. فالنمط كبير نسبياً، كما أنه يُمثل تحدياً في برمجته كمكتبة قابلة لإعادة الاستخدام .
- جزء من كود الكائن
- على غرار مقتطفات الشفرة المصدرية، يمكن للمترجم الفوري (JIT) دمج الشفرة المترجمة مسبقًا في مقاطع أطول من شفرة الكائن . هذا يقلل من وقت التفسير ويسرع التنفيذ.
- إدخال كود الذكاء الاصطناعي
- يمكن لتقنيات الذكاء الاصطناعي التوليدي ، مثل GitHub Copilot، استنتاج الوظائف من شفرة المصدر وإدراج شفرة ذات صلة يمكن اعتبارها مشابهة لمقتطف برمجي. [ 4 ] [ 5 ]
انظر أيضاً
- الإكمال التلقائي – ميزة حاسوبية تتنبأ بنهاية الكلمة التي يكتبها المستخدم
- إعادة هيكلة الكود – إعادة تنظيم الكود البرمجي الحالي دون تغيير سلوكه الخارجي
- إدارة المحتوى – إنشاء المعلومات وعرضها للجمهور
- الكود المكرر – جزء متكرر من كود المصدر الحاسوبي
- Pastebin – نوع من خدمات استضافة المحتوى عبر الإنترنت حيث يمكن للمستخدمين تخزين النصوص العادية
- سكراب بوك (نظام التشغيل ماك) – برنامج كمبيوتر ماكنتوش
- التحكم في الإصدارات – إدارة إصدارات التعليمات البرمجية المصدرية أو البيانات
- أداة ويب - تطبيق صغير مصمم للاستخدام داخل صفحات الويب
مراجع
- ↑ "Gedit/Plugins/Snippets" . مؤرشف من الأصل بتاريخ 25-08-2012 . تم الاطلاع عليه بتاريخ 09-01-2010 .مثال على هذه الميزة في محرر Gedit.
- ↑ كيم، ميريونغ؛ بيرغمان، لورانس؛ لاو، تيسا؛ نوتكين، ديفيد (2004). "دراسة إثنوغرافية لممارسات البرمجة بالنسخ واللصق في لغات البرمجة الكائنية التوجه" (ملف PDF) . وقائع: الندوة الدولية لعام 2004 حول هندسة البرمجيات التجريبية، ISESE 2004: 19-20 أغسطس 2004، ريدوندو بيتش، كاليفورنيا . لوس ألاميتوس، كاليفورنيا: IEEE . الصفحات 83-92 . ISBN 978-0-7695-2165-7OCLC 326620442. مؤرشف من الأصل (PDF) بتاريخ 19 أكتوبر 2016. تم الاطلاع عليه بتاريخ 18 أكتوبر 2016. لكل حالة نسخ ولصق ،
لاحظنا أيضًا العلاقة بين جزء الكود المنسوخ والكود الموجود في مكان آخر في قاعدة الكود
. - ↑ "المواصفات" . microsoft.github.io . تم الاطلاع عليه في 4 سبتمبر 2025 .
- ↑ إتش إم لي، تريت؛ تشين، هاو؛ علي بابار، محمد (2021). "التعلم العميق لنمذجة وتوليد شفرة المصدر". مجلة ACM Computing Surveys . 53 (3). جامعة أديلايد: 1-38 . arXiv : 2002.05442 . doi : 10.1145/3383458 . S2CID 211096967 .
- ↑ "GitHub يستعرض أداة ذكاء اصطناعي جديدة تقدم اقتراحات برمجية" . TechCrunch . 29 يونيو 2021. تاريخ الاطلاع: 25 يوليو 2021 .
- شفرة المصدر
- ميزات محرر النصوص
