Сниппет (программирование) - Snippet (programming)

Пример фрагмента кода.

Фрагмент это термин программирования для небольшой области многоразового использования исходный код, Машинный код, или текст. Обычно это формально определенные оперативные подразделения для включения в более крупные модули программирования. Управление сниппетом это особенность некоторых текстовые редакторы, программа редакторы исходного кода, Иды, и связанные программного обеспечения. Это позволяет пользователю избежать повторного набора текста в ходе рутинных операций редактирования.[1]

[1]Обзор

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

Фрагменты в текстовых редакторах

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

Фрагменты в IDE

Некоторые программные приложения, такие как Затмение, NetBeans и Microsoft Visual Studio и другие Иды включать встроенные части структуры для простоты кодирования.

Другие приложения, такие как Macromedia Dreamweaver использовать эти фрагменты кода также для веб-разработка.

Фрагменты в JIT-компиляторах

Вовремя (JIT ) компиляторы могут "склеивать" предварительно скомпилированные участки кода как более длинные объектный код /Машинный код сегменты. Это значительно сокращает время интерпретации и одновременно ускоряет выполнение.

Определение

В практике программирования «сниппет» узко относится к части исходного кода, которая буквально включается программой-редактором в файл и является формой копировать и вставлять программирование.[2] Это конкретное включение контрастирует с методами абстракции, такими как функции или макросы, которые являются абстракцией внутри языка. Таким образом, фрагменты используются в первую очередь, когда эти абстракции недоступны или нежелательны, например, в языках, в которых отсутствует абстракция, или для ясности и отсутствия накладных расходов.

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

пример

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

temp = xx = yy = temp

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

temp = foofoo = barbar = temp

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

Фрагмент этого может быть представлен как:

temp = $ 1 $ 1 = $ 2 $ 2 = temp

Конвенции

В дополнение к базовым возможностям управления, описанным ранее, функции управления сниппетами можно классифицировать в соответствии с объемом взаимодействия между сниппетами и текстовым редактором или приложением, в котором они размещены.

Эти группы функций фрагмента включают:

  • простой текст или "статические" фрагменты
  • интерактивные или «динамические» фрагменты
  • скриптовые фрагменты

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

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

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

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

Заполнители фрагментов

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

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

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

Идентификаторы заполнителя

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

В следующем примере используются идентификаторы имя, фамилия, и предмет:

Здравствуйте {%имя%}{%фамилия%},Ваш груз {%предмет%} теперь готов забрать.Спасибо {%имя%}!

Дублирование заполнителя

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

Преобразование заполнителя

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

Возможности программирования сниппетов

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

Простой текст

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

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

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

Константы и переменные

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

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

Интерпретируемый код

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

Альтернативы

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

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

Смотрите также

использованная литература

  1. ^ а б «Gedit / плагины / фрагменты». Архивировано из оригинал на 2012-08-25. Получено 2010-01-09. Пример функции в редакторе Gedit.
  2. ^ Ким, Мирён; Бергман, Лоуренс; Лау, Тесса; Ноткин, Дэвид (2004). «Этнографическое исследование практик программирования копирования и вставки в OOPL» (PDF). Труды: Международный симпозиум 2004 г. по эмпирической разработке программного обеспечения, ISESE 2004: 19–20 августа 2004 г., Редондо-Бич, Калифорния. Лос-Аламитос, Калифорния: IEEE. С. 83–92. ISBN  978-0-7695-2165-7. OCLC  326620442. Для каждого экземпляра C&P мы также отметили взаимосвязь между скопированным фрагментом кода и кодом в другом месте базы кода.

Примеры фрагментов кода