В компьютерном программировании, шаблонный код или просто шаблонный - это участки кода, которые необходимо включать во многие места с небольшими изменениями или без них. При использовании языков, которые считаются многословными, программист должен писать много кода для выполнения лишь незначительных функций. Такой код называется шаблонным.
Потребность в шаблоне может быть уменьшена с помощью механизмов высокого уровня, таких как метапрограммирование (при котором компьютер автоматически записывает необходимый шаблонный код или вставляет его в время компиляции ), соглашение по конфигурации (которое обеспечивает хорошие значения по умолчанию, уменьшая необходимость указывать детали программы в каждом проекте) и проектирование на основе моделей (которое использует модели генераторы модели в код, устраняющие необходимость в ручном стандартном коде).
термин возник из газеты дело. Колонки и другие материалы, которые распространялись печатными синдикатами, были отправлены подписавшимся газетам в виде подготовленных печатных форм. Из-за своего сходства с металлическими пластинами, использовавшимися при изготовлении котлов, они стали известны как «котельные пластины», а получившийся текст - «шаблонный текст». Поскольку истории, которые распространялись с помощью котлов, обычно были «наполнителями », а не «серьезными» новостями, этот термин стал синонимом неоригинального повторяющегося текста.
Связанный термин - бухгалтерский кодекс, относится к коду, который не является частью бизнес-логики , но перемежается с ней, чтобы обновлять структуры данных или обрабатывать вторичные аспекты программы.
Одна форма шаблона состоит из объявлений, которые, хотя и не являются частью программной логики или основного синтаксиса языка, добавляются в начало исходного файла. по обычаю. Следующий пример Perl демонстрирует шаблон:
#! / Usr / bin / perl use warnings; используйте строгий;
Первая строка - это shebang, которая идентифицирует файл как сценарий Perl, который может выполняться непосредственно в командной строке (в системах Unix / Linux). Два других - это прагмы включение предупреждений и строгого режима, которые требуются модным стилем программирования Perl .
Следующий пример представляет собой шаблон языка программирования C / C ++ , #include
guard.
#ifndef MYINTERFACE_H #define MYINTERFACE_H... #endif
Это проверяет и устанавливает глобальный флаг, чтобы сообщить компилятору, был ли уже включен файл myinterface.h. Поскольку в компиляции модуля может быть задействовано множество взаимозависимых файлов, это позволяет избежать многократной обработки одного и того же заголовка (что может привести к ошибкам из-за нескольких определений с одним и тем же именем).
В объектно-ориентированных программах классы часто снабжены методами для получения и установки переменных экземпляра. Определения этих методов часто можно рассматривать как шаблонные. Хотя код будет отличаться от одного класса к другому, он достаточно стереотипен по структуре, поэтому его лучше сгенерировать автоматически, чем написать вручную. Например, в следующем классе Java, представляющем домашнее животное, почти весь код является стандартным, за исключением объявлений Pet, name и owner:
public class Pet {private String название; владелец частного лица; общедоступное домашнее животное (строковое имя, владелец лица) {this.name = name; this.owner = владелец; } public String getName () {возвращаемое имя; } public void setName (имя строки) {this.name = name; } public Person getOwner () {возвращение владельца; } public void setOwner (владелец лица) {this.owner = owner; }}
Большая часть шаблона в этом примере предназначена для обеспечения инкапсуляции. Если бы переменные name и owner были объявлены как public, методы доступа и мутаторы не понадобились бы.
Чтобы уменьшить количество шаблонов, было разработано множество фреймворков, например Ломбок для Java. Тот же код, что и выше, автоматически генерируется Lombok с использованием аннотаций Java, что является формой метапрограммирования :
@AllArgsConstructor @Getter @Setter public class Pet {private String name; владелец частного лица; }
В некоторых других языках программирования может быть возможно достичь того же самого с меньшим количеством шаблонов, когда язык имеет встроенную поддержку таких общих конструкций. Например, эквивалент приведенного выше кода Java может быть выражен в Scala, используя всего одну строку кода:
case class Pet (var name: String, var owner: Person)
Или в C # с использованием автоматических свойств с поддерживающими полями, созданными компилятором:
открытый класс Pet {общедоступная строка Name {get; задавать; } Владелец публичного лица {получить; задавать; }}
В HTML следующий шаблон используется как базовый пустой шаблон и присутствует на большинстве веб-страниц:
WHATWG HTML Living Standard определяет, что теги ,
и
можно безопасно опускать в большинстве случаев. Тег
также может быть опущен, если веб-сервер правильно настроен для отправки кодировки символов вместе с типом контента. Руководство по стилю HTML / CSS от Google рекомендует опустить все необязательные теги, в результате в гораздо более компактном шаблоне: