Сниппет

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Сниппет (англ. snippet — фрагмент, отрывок) в практике программирования — небольшой фрагмент исходного кода или текста, пригодный для повторного использования. Сниппеты не являются заменой процедур, функций или других подобных понятий структурного программирования. Они обычно используются для более лёгкой читаемости кода функций, которые без их использования выглядят слишком перегруженными деталями, или для устранения повторения одного и того же общего участка кода[источник не указан 654 дня].

Управление сниппетами (англ. snippet management) — функциональность некоторых редакторов кода и сред разработки. Она позволяет пользователю сохранять сниппеты для дальнейшего использования в процессе разработки кода в этом редакторе.

Обзор[править | править вики-текст]

Сниппеты в поисковых системах[править | править вики-текст]

Термин сниппет иногда используется для небольших отрывков текста из найденной поисковой машиной страницы сайта, использующихся в качестве описания ссылки в результатах поиска. Как правило, они содержат контекст, в котором встретилось ключевое слово в тексте на странице. В качестве сниппетов также может выводиться текст из мета-тега «Description». Более подробно см. страница выдачи результатов поиска.

Просмотрев сниппет, можно приблизительно понять, соответствует ли страница именно вашему запросу, даже не открывая самой этой страницы.

Сниппеты в текстовых редакторах[править | править вики-текст]

Функция управления сниппетами в текстовых редакторах популярна среди разработчиков программного обеспечения и тех, кому постоянно требуется ввод повторяющегося текста. Эта потребность объясняется тем, что вводимый фрагмент текста не меняется, или меняется очень мало.

Текстовые редакторы, включающие такую функциональность, обычно имеют механизм, который позволяет управлять набором сниппетов (каталогом) аналогично тому, как редакторы или операционные системы позволяют управлять документами или файлами. Этот механизм включает такие операции, как просмотр, добавление, изменение, удаление, сортировка, фильтрация, группировка и переименование сниппетов в репозитории, каталоге или базе данных.

Сниппеты в средах разработки[править | править вики-текст]

Интегрированные среды разработки (IDE) содержат встроенные средства для ввода конструкций языка. Например, в Microsoft Visual Studio, Borland Developer Studio, для этого необходимо ввести ключевое слово и нажать определённую клавишную комбинацию. В IDE Geany существует специальный файл snippets.conf (путь к файлу: /home/user/.config/geany) позволяющий создавать свои сниппеты. Другие программы, такие как Macromedia Dreamweaver и Zend Studio, позволяют использовать сниппеты в Веб-программировании.

Классификация программных сниппетов[править | править вики-текст]

Функциональность сниппетов, дополнительная к описанной выше, может быть использована для классификации снипеттов по степени их «интерактивности» (модифицируемости, настраиваемости)[источник не указан 654 дня].

С этой точки зрения сниппеты делятся на:

  • статические (англ. plain-text);
  • интерактивные или динамические;
  • скриптовые.

Статические сниппеты состоят главным образом из неизменного текста, который пользователь может выбрать для вставки в текущий документ. Пользователь не может задать никаких дополнительных параметров, кроме, может быть, положения курсора относительно вставляемого текста. Статические снипетты напоминают простые макросы в языках программирования.

Динамические снипетты состоят из неизменного текста и динамических элементов. Пользователь может задать как значение этих динамических элементов, так и их положение в неизменном тексте в процессе выбора и вставки сниппета. Примерами динамических элементов являются переменные, принимающие значение текущей даты или системного времени, или ввода пользователя через графический интерфейс. Динамические сниппеты имеют много общего с макрокомандами и шаблонами (template).

Скриптовые сниппеты состоят из кода на программном макроязыке или скриптовом языке. Скриптовые сниппеты дают пользователю максимальную гибкость, конечно в рамках возможностей, предоставляемых программным языком, известности языка для пользователя и распространённости языка.

Возможности команд скрипта различаются и зависят от приложения, использующего сниппеты (хост-приложения). Они могут включать выполнение команд командного интерпретатора, вывод диалоговых окон и другие способы взаимодействия пользователя с операционной системой и компонентами хост-приложения.

Возможности программных сниппетов[править | править вики-текст]

Поддержка приложениями возможностей скриптовых сниппетов сильно различается. Ниже описываются функции, которые обычно присутствуют в системах, поддерживающих программируемые сниппеты.

Статический текст (plain text)[править | править вики-текст]

Хотя поддержка неизменяемого текста является базовой функциональностью, реализованной даже в программах, поддерживающих только статические сниппеты, программируемые снипетты используются также и для работы с таким текстом.

Одной общей трудностью, однако, является то, что система, поддерживающая программируемые сниппеты, часто должна иметь возможность различать, что является статичным текстом, а что — программными командами. Дополнительным усложнением такого различения является то, что приложения, поддерживающие программные сниппеты, почти всегда включают поддержку нескольких языков программирования или через подсветку синтаксиса, или через выполнение встроенных команд.

По этим и другим причинам, выделение статичного текста из программного сниппета почти всегда сопряженно с необходимостью избежать трудностей с синтаксическим анализом и идентификацией разделителей.

Константы и переменные[править | править вики-текст]

Программируемые сниппеты часто предоставляют пользователю возможность указать пространство имён или область действия существующих переменных, в которых он может затем выбрать различные константы и переменные для формирования текста сниппета. Это может быть адрес электронной почты пользователя, работающего в системе, текущее системное время или дата, результат работы функции.

Скриптовые сниппеты часто ассоциируются с файлами, над которыми идёт работа. Поэтому переменные в сниппетах могут включать значения переменных среды и аргументы, определяющие имя файла, позицию курсора в нём, содержащий файл каталог и другие величины, относящиеся к редактируемому файлу.

Интерпретируемый код[править | править вики-текст]

Скриптовые сниппеты могут содержать код на нескольких языках программирования. Это могут быть как самостоятельные языки программирования, так и язык, специфичный для приложения, в рамках которого он используется. [1]

Заполняемые шаблоны[править | править вики-текст]

Скриптовые сниппеты обычно включают возможность для подстановки значения, введённого пользователем. Это значение не определено до момента, когда сниппет вставляется или активируется каким-либо образом в ходе редактирования. Некоторые приложения определяют специальный язык разметки, который позволяет редактору определить границы шаблона в вводимом тексте.

Другие приложения используют графический интерфейс пользователя и модальные окна, которые позволяют пользователю ввести одно или несколько значений для подстановки на место шаблонов.

Идентификаторы шаблонов[править | править вики-текст]

Обычно шаблоны выделяются при помощи специальных символов или последовательностей символов, отделяющих их от остального текста сниппета. Некоторые системы позволяют давать названия (идентификаторы) шаблонам. Идентификаторы могут быть полезны для поддержки функций повторения или модификации шаблона.

Следующий пример текста сниппета использует идентификаторы 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 является примером такого использования.

Модификация шаблона[править | править вики-текст]

Эта функциональность позволяет указать, что значение, сопоставленное шаблону, должно модифицироваться при использовании в разных частях текста сниппета. Например, пользователь может указать что шаблон, заменяемый на название документа и повторяющийся в сниппете несколько раз, выводится первый раз заглавными буквами, а во всех остальных случаях — строчными.

Программы, поддерживающие сниппеты[править | править вики-текст]

Ниже приводится неполный перечень приложений, поддерживающих сниппеты. Дополнительные сведения приводятся в статье о текстовых редакторах.

Сниппеты Статические Динамические Скриптовые
Textmate да да да
Textpad да нет нет
Emacs да да да
Sublime Text да да да
IntelliJ IDEA да да да

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. (Смотри, например, http://code.google.com/p/yasnippet/ YaSnippet, implemented for the Emacs text editor).