Сніпет (фрагмент коду, англ. snippet — фрагмент, уривок) в практиці програмування — невеликий фрагмент початкового коду або тексту, придатний для повторного використання. Сніпети не є заміною процедур, функцій або інших подібних понять структурного програмування. Вони зазвичай використовуються для більш легкого читання коду функцій, які без їх використання виглядають занадто перевантаженими деталями, або для усунення повторення окремої частини ділянки коду.
Керування сніпетами (англ. snippet management) — функціональність деяких редакторів коду і середовищ розробки. Воно дозволяє користувачеві зберігати сніпети для подальшого використання в процесі розробки коду в редакторі.
Огляд
Сніпети в пошукових системах
Термін сніпет іноді використовується для невеликих уривків тексту зі знайденої пошуковою машиною сторінки сайту, що використовуються як опис посилання в результатах пошуку. Зазвичай, вони містять контекст, в якому зустрілося ключове слово в тексті на сторінці. Як сніпети також може виводитися текст з мета-тегами «Description». Більш детально див. сторінка видачі результатів пошуку.
Переглянувши сніпет, можна приблизно зрозуміти, чи відповідає сторінка саме вашому запиту, навіть не відкриваючи саму сторінку.
Сніпети в текстових редакторах
Функція керування сніпетами в текстових редакторах популярна серед розробників програмного забезпечення і тих, кому постійно потрібне введення повторюваного тексту. Ця потреба пояснюється тим, що фрагмент тексту який вводиться не змінюється, або змінюється дуже мало.
Текстові редактори, що включають таку функціональність, зазвичай мають механізм, який дозволяє керувати набором сніпетів (каталогом) аналогічно тому, як редактори або операційні системи дозволяють керувати документами або файлами. Цей механізм включає такі операції, як перегляд, створення, редагування, видалення, сортування, фільтрація, групування та перейменування сніпетів в репозиторії, каталозі або базі даних.
Сніпети в середовищах розробки
Інтегровані середовища розробки (IDE) містять вбудовані засоби для введення конструкцій мови. Наприклад, в Microsoft Visual Studio, Borland Developer Studio, для цього необхідно ввести ключове слово та натиснути певну клавішну комбінацію. В IDE Geany існує спеціальний файл snippets.conf (шлях до файлу: /home/user/.config/geany) дозволяє створювати свої сніпети. Інші програми, такі як Macromedia Dreamweaver і Zend Studio, дозволяють використовувати сніпети у вебпрограмуванні.
Класифікація програмних сніпетів
Функціональність сніпетів, додаткова до описаної вище, може бути використана для класифікації сніпетів за ступінем їх «інтерактивності» (модифікованості, налаштуванності) .
З цієї точки зору сніпети поділяються на:
- статичні (англ. plain-text);
- інтерактивні або динамічні;
- скриптові.
Статичні сніпети складаються головним чином з незмінного тексту, який користувач може вибрати для вставки в поточний документ. Користувач не може задати ніяких додаткових параметрів, крім, положення курсору де необхідно вставити текст. Статичні сніпети нагадують прості макроси в мовах програмування.
Динамічні сніпети складаються з незмінного тексту та динамічних елементів. Користувач може задати як значення цих динамічних елементів, так і їх положення в незмінному тексті в процесі вибору та вставки сніпету. Прикладами динамічних елементів є змінні, що приймають значення поточної дати або системного часу, або введення користувача через графічний інтерфейс. Динамічні сніпети мають багато спільного з макрокомандами та (template).
Скриптові сніпети складаються з коду на програмній макромові або скриптовій мові. Скриптові сніпети дають користувачеві максимальну гнучкість, звичайно в рамках можливостей, що надаються програмною мовою, її популярності для користувача та поширеності.
Можливості команд скрипту розрізняються і залежать від програми, що використовує сніпети (хост-додатки[]). Вони можуть включати виконання команд командного інтерпретатора, висновок діалогових вікон та інші способи взаємодії користувача з операційною системою та компонентами хост-додатків.
Приклади
Розглянемо процес заміни значень для двох змінних, X та У. Якщо припустити слабку типізацію та не піклуватись про зіткнення імен, це представлено кодом:
temp = x x = y y = temp
Коли сніпет вставляється, програмісту буде запропоновано обрати значення двох параметрів. Припускаючи, що вони є типу foo
та bar
, які фактично є назвами змінних, які необхідно змінити, це показує код:
temp = foo foo = bar bar = temp
Якщо сніпет згодом зміниться, потрібно використовувати __temp
замість temp
, він не буде змінювати код, який вже був вставлений, але буде використовувати в наступних вставках сніпету. Такий сніпет може бути представлений у вигляді:
temp = $1 $1 = $2 $2 = temp
Альтернативи
У мові C, альтернативою сніпету є використання макросів. Макрос для обміну двох цілих чисел може бути визначений як:
#define SWAP_INT(x, y) \ {int temp; temp = x; x = y; y = temp;}
або більш правильно:
#define SWAP(type, x, y) \ do { \ type temp; temp = x; x = y; y = temp; \ } while(0)
Зверніть увагу, що використання блоку видимості в С означає, що змінна temp
перекриває будь-яку іншу змінну з таким ім'ям, і дозволяє уникнути конфліктів імен; за відсутності таких механізмів, надавати ім'я таким змінним, як __temp
необхідно. Крім того, конструкція do ... while(0)
використовується, щоб дозволити макросу бути вбудованим у будь-який конструктор. Ці побоювання виникають з макросами, тому що вони потенційно можуть бути використані в будь-якому місці, і, так як вони не розширені, поточний синтаксис незрозумілий на місці включення. Це дозволило б використовувати:
#define SWAP(type, x, y) \ do { \ type temp; temp = x; x = y; y = temp; \ } while(0) void bubble_sort(int list[], int size) { // ... SWAP(int, list[i], list[i+1]); // ... }
Слід зазначити, що макровизначення і ім'я будуть включені у файл, і повинні бути оброблені до компіляції програми. Крім того, функція може бути використана; тому що він повинен замінити змінні, параметри повинні бути передані за посиланням, за допомогою покажчиків:
void swap_int(int *x, int *y) { int temp = *x; *x = *y; *y = temp; } void bubble_sort(int list[], int size) { // ... swap_int(&(list[i]), &(list[i+1])); // ... }
У цьому випадку, використання макрокоманди або функції додає значні накладні витрати на просте завдання обміну двох змінних, і, як правило, замість того, щоб записати у вигляді такого коду:
void bubble_sort(int list[], int size) { // ... if (list[i] > list[i+1]) { int temp = list[i]; list[i] = list[i+1]; list[i+1] = temp; } // ... }
Код обміну змінних може бути отриманий у наступному сніпеті:
{ $1 temp = $2 $2 = $3 $3 = temp }
Можливості програмних сніпетів
Підтримка додатками можливостей скриптових сніпетів сильно розрізняється. Нижче описуються функції, які зазвичай присутні в системах, що підтримують програмовані сніпети.
Статичний текст (plain text)
Хоча підтримка незмінного тексту є базовою функціональністю, реалізованої навіть у програмах, що підтримують лише статичні сніпети, програмовані сніпети використовуються також і для роботи з таким текстом.
Однією загальною проблемою, однак, є те, що система, що підтримує програмовані сніпети, часто повинна мати можливість розрізняти, що є статичним текстом, а що — програмними командами. Додатковим ускладненням такого розрізнення є те, що додатки, які підтримують програмні сніпети, майже завжди включають підтримку декількох мов програмування або через підсвічування синтаксису, або через виконання вбудованих команд.
З цих та інших причин, виділення статичного тексту з програмного сніпету майже завжди пов'язано з необхідністю уникнути труднощів з синтаксичним аналізом та ідентифікацією роздільників.
Константи та змінні
Програмовані сніпети часто надають користувачеві можливість вказати простір імен або область дії існуючих змінних, в яких він може потім обрати різні константи та змінні для формування тексту сніпету. Це може бути адреса електронної пошти користувача, що працює в системі, поточний системний час або дата, результат роботи функції.
Скриптові сніпети часто асоціюються з файлами, над якими йде робота. Тому змінні в сніпеті можуть включати значення змінних середовища та аргументи, що визначають ім'я файлу, позицію курсора в ньому, що містить файл, каталог та інші величини, що належать редагованому файлу.
Інтерпретований код
Скриптові сніпети можуть містити код на кількох мовах програмування. Це можуть бути як самостійні мови програмування, так і мова, специфічна для програми, в рамках якої він використовується.
Заповнювані шаблони
Скриптові сніпети зазвичай включають можливість для підстановки значення, введеного користувачем. Це значення не визначене до моменту, коли сніпет вставляється або активується будь-яким чином під час редагування. Деякі програми визначають спеціальну мову розмітки, яка дозволяє редактору визначити межі шаблону в введеному тексті.
Інші додатки використовують графічний інтерфейс користувача та модальні вікна, які дозволяють користувачеві ввести одне або кілька значень для підстановки на місце шаблонів.
Ідентифікатори шаблонів
Зазвичай шаблони виділяються за допомогою спеціальних символів або послідовностей символів, що відокремлюють їх від решти тексту сніпету. Деякі системи дозволяють давати назви (ідентифікатори) шаблонам. Ідентифікатори можуть бути корисні для підтримки функцій повторення або модифікації шаблону.
Такий приклад тексту сніпету використовує ідентифікатори first_name
, last_name
та item
:
Hello {%first_name%} {%last_name%}, Your shipment of {%item%} is now ready to pick up. Thanks {%first_name%}!
Повторення шаблону
Повторення дозволяє користувачеві використовувати значення, побудоване шаблоном, в тексті сніпету кілька разів. У попередньому прикладі ідентифікатор шаблону first_name
є прикладом такого використання.
Модифікація шаблону
Ця функціональність дозволяє вказати, що значення, побудоване шаблоном, повинно модифікуватися при використанні в різних частинах тексту сніпету. Наприклад, користувач може вказати що, шаблон, що замінюється на назву документа та повторюваний в сніпеті кілька разів, виводиться перший раз великими літерами, а у всіх інших випадках — малими.
Програми, що підтримують сніпети
Нижче наводиться неповний перелік додатків, що підтримують сніпети. Додаткові відомості наводяться в статті про текстові редактори.
Сніпети | Статичні | Динамічні | Скриптові |
так | так | так | |
так | немає | немає | |
Emacs | так | так | так |
Sublime Text | так | так | так |
IntelliJ IDEA | так | так | так |
Див. також
- Автодоповнення
- [en]
Примітки
- Наприклад YaSnippet [ 8 лютого 2014 у Wayback Machine.] для текстового редактора Emacs.
Джерела
- Kim, Miryung; Bergman, Lawrence; Lau, Tessa; Notkin, David (2004). (PDF). Proceedings: 2004 International Symposium on Empirical Software Engineering, ISESE 2004: 19–20 August 2004, Redondo Beach, California. Los Alamitos, CA: IEEE. с. 83—92. ISBN . OCLC 326620442. Архів оригіналу (PDF) за 19 жовтня 2016. Процитовано 24 серпня 2020.
For each C&P instance, we also noted the relationship between a copied code snippet and code elsewhere in the code base.
- Boost.Asio C++ Network Programming. Anggoro Wisnu / Packt Publishing, 2015. — 200 p. — (Фрагменти для ознайомлення)
Посилання
- Шаблони (сніпети) для Sass [ 8 серпня 2020 у Wayback Machine.] 2014
- Collection of useful Code snippets [ 17 серпня 2020 у Wayback Machine.] (including code for Python, PHP, SQL and Bash)
- Creating Standalone Snippets with Snippet Compiler
Ця стаття потребує додаткових для поліпшення її . (серпень 2020) |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Snipet fragment kodu angl snippet fragment urivok v praktici programuvannya nevelikij fragment pochatkovogo kodu abo tekstu pridatnij dlya povtornogo vikoristannya Snipeti ne ye zaminoyu procedur funkcij abo inshih podibnih ponyat strukturnogo programuvannya Voni zazvichaj vikoristovuyutsya dlya bilsh legkogo chitannya kodu funkcij yaki bez yih vikoristannya viglyadayut zanadto perevantazhenimi detalyami abo dlya usunennya povtorennya okremoyi chastini dilyanki kodu Keruvannya snipetami angl snippet management funkcionalnist deyakih redaktoriv kodu i seredovish rozrobki Vono dozvolyaye koristuvachevi zberigati snipeti dlya podalshogo vikoristannya v procesi rozrobki kodu v redaktori OglyadSnipeti v poshukovih sistemah Snipet u poshukovij sistemi Google pislya sinogo zagolovku Termin snipet inodi vikoristovuyetsya dlya nevelikih urivkiv tekstu zi znajdenoyi poshukovoyu mashinoyu storinki sajtu sho vikoristovuyutsya yak opis posilannya v rezultatah poshuku Zazvichaj voni mistyat kontekst v yakomu zustrilosya klyuchove slovo v teksti na storinci Yak snipeti takozh mozhe vivoditisya tekst z meta tegami Description Bilsh detalno div storinka vidachi rezultativ poshuku Pereglyanuvshi snipet mozhna priblizno zrozumiti chi vidpovidaye storinka same vashomu zapitu navit ne vidkrivayuchi samu storinku Snipeti v tekstovih redaktorah Funkciya keruvannya snipetami v tekstovih redaktorah populyarna sered rozrobnikiv programnogo zabezpechennya i tih komu postijno potribne vvedennya povtoryuvanogo tekstu Cya potreba poyasnyuyetsya tim sho fragment tekstu yakij vvoditsya ne zminyuyetsya abo zminyuyetsya duzhe malo Tekstovi redaktori sho vklyuchayut taku funkcionalnist zazvichaj mayut mehanizm yakij dozvolyaye keruvati naborom snipetiv katalogom analogichno tomu yak redaktori abo operacijni sistemi dozvolyayut keruvati dokumentami abo fajlami Cej mehanizm vklyuchaye taki operaciyi yak pereglyad stvorennya redaguvannya vidalennya sortuvannya filtraciya grupuvannya ta perejmenuvannya snipetiv v repozitoriyi katalozi abo bazi danih Snipeti v seredovishah rozrobki Integrovani seredovisha rozrobki IDE mistyat vbudovani zasobi dlya vvedennya konstrukcij movi Napriklad v Microsoft Visual Studio Borland Developer Studio dlya cogo neobhidno vvesti klyuchove slovo ta natisnuti pevnu klavishnu kombinaciyu V IDE Geany isnuye specialnij fajl snippets conf shlyah do fajlu home user config geany dozvolyaye stvoryuvati svoyi snipeti Inshi programi taki yak Macromedia Dreamweaver i Zend Studio dozvolyayut vikoristovuvati snipeti u vebprogramuvanni Klasifikaciya programnih snipetiv Funkcionalnist snipetiv dodatkova do opisanoyi vishe mozhe buti vikoristana dlya klasifikaciyi snipetiv za stupinem yih interaktivnosti modifikovanosti nalashtuvannosti dzherelo ne vkazane 4173 dni Z ciyeyi tochki zoru snipeti podilyayutsya na statichni angl plain text interaktivni abo dinamichni skriptovi Statichni snipeti skladayutsya golovnim chinom z nezminnogo tekstu yakij koristuvach mozhe vibrati dlya vstavki v potochnij dokument Koristuvach ne mozhe zadati niyakih dodatkovih parametriv krim polozhennya kursoru de neobhidno vstaviti tekst Statichni snipeti nagaduyut prosti makrosi v movah programuvannya Dinamichni snipeti skladayutsya z nezminnogo tekstu ta dinamichnih elementiv Koristuvach mozhe zadati yak znachennya cih dinamichnih elementiv tak i yih polozhennya v nezminnomu teksti v procesi viboru ta vstavki snipetu Prikladami dinamichnih elementiv ye zminni sho prijmayut znachennya potochnoyi dati abo sistemnogo chasu abo vvedennya koristuvacha cherez grafichnij interfejs Dinamichni snipeti mayut bagato spilnogo z makrokomandami ta shablonami template Skriptovi snipeti skladayutsya z kodu na programnij makromovi abo skriptovij movi Skriptovi snipeti dayut koristuvachevi maksimalnu gnuchkist zvichajno v ramkah mozhlivostej sho nadayutsya programnoyu movoyu yiyi populyarnosti dlya koristuvacha ta poshirenosti Mozhlivosti komand skriptu rozriznyayutsya i zalezhat vid programi sho vikoristovuye snipeti host dodatki sho Voni mozhut vklyuchati vikonannya komand komandnogo interpretatora visnovok dialogovih vikon ta inshi sposobi vzayemodiyi koristuvacha z operacijnoyu sistemoyu ta komponentami host dodatkiv PrikladiRozglyanemo proces zamini znachen dlya dvoh zminnih X ta U Yaksho pripustiti slabku tipizaciyu ta ne pikluvatis pro zitknennya imen ce predstavleno kodom temp x x y y temp Koli snipet vstavlyayetsya programistu bude zaproponovano obrati znachennya dvoh parametriv Pripuskayuchi sho voni ye tipu foo ta bar yaki faktichno ye nazvami zminnih yaki neobhidno zminiti ce pokazuye kod temp foo foo bar bar temp Yaksho snipet zgodom zminitsya potribno vikoristovuvati temp zamist temp vin ne bude zminyuvati kod yakij vzhe buv vstavlenij ale bude vikoristovuvati v nastupnih vstavkah snipetu Takij snipet mozhe buti predstavlenij u viglyadi temp 1 1 2 2 temp Alternativi U movi C alternativoyu snipetu ye vikoristannya makrosiv Makros dlya obminu dvoh cilih chisel mozhe buti viznachenij yak define SWAP INT x y int temp temp x x y y temp abo bilsh pravilno define SWAP type x y do type temp temp x x y y temp while 0 Zvernit uvagu sho vikoristannya bloku vidimosti v S oznachaye sho zminna temp perekrivaye bud yaku inshu zminnu z takim im yam i dozvolyaye uniknuti konfliktiv imen za vidsutnosti takih mehanizmiv nadavati im ya takim zminnim yak temp neobhidno Krim togo konstrukciya do while 0 vikoristovuyetsya shob dozvoliti makrosu buti vbudovanim u bud yakij konstruktor Ci poboyuvannya vinikayut z makrosami tomu sho voni potencijno mozhut buti vikoristani v bud yakomu misci i tak yak voni ne rozshireni potochnij sintaksis nezrozumilij na misci vklyuchennya Ce dozvolilo b vikoristovuvati define SWAP type x y do type temp temp x x y y temp while 0 void bubble sort int list int size SWAP int list i list i 1 Slid zaznachiti sho makroviznachennya i im ya budut vklyucheni u fajl i povinni buti obrobleni do kompilyaciyi programi Krim togo funkciya mozhe buti vikoristana tomu sho vin povinen zaminiti zminni parametri povinni buti peredani za posilannyam za dopomogoyu pokazhchikiv void swap int int x int y int temp x x y y temp void bubble sort int list int size swap int amp list i amp list i 1 U comu vipadku vikoristannya makrokomandi abo funkciyi dodaye znachni nakladni vitrati na proste zavdannya obminu dvoh zminnih i yak pravilo zamist togo shob zapisati u viglyadi takogo kodu void bubble sort int list int size if list i gt list i 1 int temp list i list i list i 1 list i 1 temp Kod obminu zminnih mozhe buti otrimanij u nastupnomu snipeti 1 temp 2 2 3 3 temp Mozhlivosti programnih snipetivPidtrimka dodatkami mozhlivostej skriptovih snipetiv silno rozriznyayetsya Nizhche opisuyutsya funkciyi yaki zazvichaj prisutni v sistemah sho pidtrimuyut programovani snipeti Statichnij tekst plain text Hocha pidtrimka nezminnogo tekstu ye bazovoyu funkcionalnistyu realizovanoyi navit u programah sho pidtrimuyut lishe statichni snipeti programovani snipeti vikoristovuyutsya takozh i dlya roboti z takim tekstom Odniyeyu zagalnoyu problemoyu odnak ye te sho sistema sho pidtrimuye programovani snipeti chasto povinna mati mozhlivist rozriznyati sho ye statichnim tekstom a sho programnimi komandami Dodatkovim uskladnennyam takogo rozriznennya ye te sho dodatki yaki pidtrimuyut programni snipeti majzhe zavzhdi vklyuchayut pidtrimku dekilkoh mov programuvannya abo cherez pidsvichuvannya sintaksisu abo cherez vikonannya vbudovanih komand Z cih ta inshih prichin vidilennya statichnogo tekstu z programnogo snipetu majzhe zavzhdi pov yazano z neobhidnistyu uniknuti trudnoshiv z sintaksichnim analizom ta identifikaciyeyu rozdilnikiv Konstanti ta zminni Programovani snipeti chasto nadayut koristuvachevi mozhlivist vkazati prostir imen abo oblast diyi isnuyuchih zminnih v yakih vin mozhe potim obrati rizni konstanti ta zminni dlya formuvannya tekstu snipetu Ce mozhe buti adresa elektronnoyi poshti koristuvacha sho pracyuye v sistemi potochnij sistemnij chas abo data rezultat roboti funkciyi Skriptovi snipeti chasto asociyuyutsya z fajlami nad yakimi jde robota Tomu zminni v snipeti mozhut vklyuchati znachennya zminnih seredovisha ta argumenti sho viznachayut im ya fajlu poziciyu kursora v nomu sho mistit fajl katalog ta inshi velichini sho nalezhat redagovanomu fajlu Interpretovanij kod Skriptovi snipeti mozhut mistiti kod na kilkoh movah programuvannya Ce mozhut buti yak samostijni movi programuvannya tak i mova specifichna dlya programi v ramkah yakoyi vin vikoristovuyetsya Zapovnyuvani shabloni Skriptovi snipeti zazvichaj vklyuchayut mozhlivist dlya pidstanovki znachennya vvedenogo koristuvachem Ce znachennya ne viznachene do momentu koli snipet vstavlyayetsya abo aktivuyetsya bud yakim chinom pid chas redaguvannya Deyaki programi viznachayut specialnu movu rozmitki yaka dozvolyaye redaktoru viznachiti mezhi shablonu v vvedenomu teksti Inshi dodatki vikoristovuyut grafichnij interfejs koristuvacha ta modalni vikna yaki dozvolyayut koristuvachevi vvesti odne abo kilka znachen dlya pidstanovki na misce shabloniv Identifikatori shabloniv Zazvichaj shabloni vidilyayutsya za dopomogoyu specialnih simvoliv abo poslidovnostej simvoliv sho vidokremlyuyut yih vid reshti tekstu snipetu Deyaki sistemi dozvolyayut davati nazvi identifikatori shablonam Identifikatori mozhut buti korisni dlya pidtrimki funkcij povtorennya abo modifikaciyi shablonu Takij priklad tekstu snipetu vikoristovuye identifikatori first name last name ta item Hello first name last name Your shipment of item is now ready to pick up Thanks first name Povtorennya shablonu Povtorennya dozvolyaye koristuvachevi vikoristovuvati znachennya pobudovane shablonom v teksti snipetu kilka raziv U poperednomu prikladi identifikator shablonu first name ye prikladom takogo vikoristannya Modifikaciya shablonu Cya funkcionalnist dozvolyaye vkazati sho znachennya pobudovane shablonom povinno modifikuvatisya pri vikoristanni v riznih chastinah tekstu snipetu Napriklad koristuvach mozhe vkazati sho shablon sho zaminyuyetsya na nazvu dokumenta ta povtoryuvanij v snipeti kilka raziv vivoditsya pershij raz velikimi literami a u vsih inshih vipadkah malimi Programi sho pidtrimuyut snipetiNizhche navoditsya nepovnij perelik dodatkiv sho pidtrimuyut snipeti Dodatkovi vidomosti navodyatsya v statti pro tekstovi redaktori Snipeti Statichni Dinamichni Skriptovi taktaktak taknemayenemaye Emacstaktaktak Sublime Texttaktaktak IntelliJ IDEAtaktaktakDiv takozhAvtodopovnennya en PrimitkiNapriklad YaSnippet 8 lyutogo 2014 u Wayback Machine dlya tekstovogo redaktora Emacs DzherelaKim Miryung Bergman Lawrence Lau Tessa Notkin David 2004 PDF Proceedings 2004 International Symposium on Empirical Software Engineering ISESE 2004 19 20 August 2004 Redondo Beach California Los Alamitos CA IEEE s 83 92 ISBN 978 0 7695 2165 7 OCLC 326620442 Arhiv originalu PDF za 19 zhovtnya 2016 Procitovano 24 serpnya 2020 For each C amp P instance we also noted the relationship between a copied code snippet and code elsewhere in the code base Boost Asio C Network Programming Anggoro Wisnu Packt Publishing 2015 200 p ISBN 978 1 78528 307 9 Fragmenti dlya oznajomlennya PosilannyaShabloni snipeti dlya Sass 8 serpnya 2020 u Wayback Machine 2014 Collection of useful Code snippets 17 serpnya 2020 u Wayback Machine including code for Python PHP SQL and Bash Creating Standalone Snippets with Snippet Compiler Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno serpen 2020