Фрагмент (программирование)

редактировать
Небольшая область повторно используемого исходного кода, машинного кода или текста Пример фрагмента кода.

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

Содержание

  • 1 Обзор
    • 1.1 Фрагменты в текстовых редакторах
    • 1.2 Фрагменты в IDE
    • 1.3 Фрагменты в JIT-компиляторах
  • 2 Определение
  • 3 Пример
  • 4 Условные обозначения
  • 5 Заполнители фрагментов
    • 5.1 Идентификаторы местозаполнителей
    • 5.2 Дублирование местозаполнителей
    • 5.3 Преобразование местозаполнителей
  • 6 Функции программирования фрагментов
    • 6.1 Обычный текст
    • 6.2 Константы и переменные
    • 6.3 Интерпретируемый код
  • 7 Альтернативы
  • 8 См. Также
  • 9 Ссылки
  • 10 Примеры фрагментов кода

Обзор

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

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

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

Фрагменты в IDE

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

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

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

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

Определение

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

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

Пример

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

temp = xx = yy = temp

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

temp = foo foo = bar bar = temp

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

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

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

Условные обозначения

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

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

  • текстовые или «статические» фрагменты
  • интерактивные или «динамические» фрагменты
  • фрагменты с возможностью сценариев

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функции программирования фрагментов

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

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

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

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

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

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

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

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

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

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

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

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

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

См. Также

Ссылки

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

Последняя правка сделана 2021-06-08 07:13:39
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте