Из Википедии, бесплатной энциклопедии
  (Перенаправлено из управления сниппетом )
Перейти к навигации Перейти к поиску
Пример фрагмента кода.

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

Обзор [ править ]

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

Фрагменты в текстовых редакторах [ править ]

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

Фрагменты в IDE [ править ]

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

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

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

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

Определение [ править ]

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

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

Пример [ править ]

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

temp = xх = уy = температура

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

temp = foofoo = barbar = temp

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

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

темп = 1 доллар США1 доллар = 2 доллара$ 2 = темп

Соглашения [ править ]

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

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

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

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

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

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

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

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

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

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

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

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

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

Следующий пример использует идентификаторы first_name, last_nameи item:

Здравствуйте {% first_name %} {% last_name %} , Ваш груз {% item %} теперь готов к получению.Спасибо, {% first_name %} !

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

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

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

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

Функции программирования сниппетов [ править ]

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

Обычный текст [ править ]

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

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

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

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

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

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

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

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

Альтернативы [ править ]

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

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

См. Также [ править ]

  • Автозаполнение  - приложение, которое предсказывает оставшуюся часть вводимого пользователем слова.
  • Кодовая база
  • Рефакторинг кода  - Реструктуризация существующего компьютерного кода без изменения его внешнего поведения.
  • Управление содержанием
  • Pastebin  - Тип службы хостинга онлайн-контента, где пользователи могут хранить простой текст.
  • Альбом для вырезок (Mac OS)
  • Контроль версий  - деятельность по управлению версией одного или нескольких файлов.
  • Веб-виджет

Ссылки [ править ]

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

Примеры фрагментов кода [ править ]

  • «15 полезных инструментов для создания фрагментов кода, которые помогут вам хранить свою библиотеку кода и управлять ею» . onextrapixel.com . 29 сентября 2009 . Проверено 18 октября +2016 .
  • «17 удобных сайтов для хранения сниппетов» . appstorm.net . Gartner, Inc. 11 февраля 2013 . Проверено 18 октября +2016 .
  • «45+ отличных ресурсов и репозиториев для фрагментов кода» . smashingmagazine.com . Smashing Magazine . 21 июля 2009 . Проверено 18 октября +2016 .
  • «Самые популярные приложения, помеченные« фрагментами кода » » . альтернатива.net . AlternativeTo . Проверено 18 октября +2016 .
  • Набор полезных фрагментов кода , включая код для Python, PHP, SQL и Bash.