Код шаблона - Boilerplate code

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

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

Источник

Термин возник из газета бизнес. Колонны и другие предметы, которые были распределены печатные синдикаты были отправлены подписывающимся газетам в виде подготовленных печатные формы. Из-за их сходства с металлическими пластинами, используемыми при изготовлении котлы, они стали называться «котельные», а получившийся в результате текст - «шаблонный текст». Поскольку рассказы, которые распространялись котельными, обычно были "наполнители "вместо" серьезных "новостей этот термин стал синонимом неоригинального повторяющегося текста.[2][3]

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

Преамбула

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

#! / usr / bin / perlиспользовать предупреждения;использовать строгий;

Первая строка - это Shebang, который идентифицирует файл как Perl-скрипт, который может быть выполнен непосредственно в командной строке (в системах Unix / Linux). Два других - прагмы включение предупреждений и строгого режима, которые требуются модным Perl стиль программирования.

Следующий пример - C / C ++ язык программирования шаблон #включают сторожить.

#ifndef MYINTERFACE_H#define MYINTERFACE_H...#endif

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

В объектно-ориентированном программировании

В объектно-ориентированные программы, классы часто снабжены методами для получение и установка переменные экземпляра. Определения этих методов часто можно рассматривать как шаблонные. Хотя код будет отличаться от одного класса к другому, он достаточно стереотипен по структуре, поэтому его лучше сгенерировать автоматически, чем написать вручную. Например, в следующем Ява класс, представляющий домашнее животное, почти весь код является стандартным, за исключением декларации из Домашний питомец, имя и владелец:

общественный учебный класс Домашний питомец {    частный Нить имя;    частный Человек владелец;    общественный Домашний питомец(Нить имя, Человек владелец) {        это.имя = имя;        это.владелец = владелец;    }    общественный Нить getName() {        возвращаться имя;    }    общественный пустота Имя набора(Нить имя) {        это.имя = имя;    }    общественный Человек getOwner() {        возвращаться владелец;    }    общественный пустота setOwner(Человек владелец) {        это.владелец = владелец;    }}

Большая часть шаблона в этом примере предназначена для предоставления инкапсуляция. Если переменные имя и владелец были объявлены как общественный, то методы доступа и мутатора не понадобится.

Чтобы уменьшить количество шаблонов, было разработано множество фреймворков, например Ломбок для Java.[4] Тот же код, что и выше, автоматически создается Lombok с использованием Аннотации Java, который является формой метапрограммирование:

@AllArgsConstructor@Getter@Setterобщественный учебный класс Домашний питомец {    частный Нить имя;    частный Человек владелец;}

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

дело учебный класс Домашний питомец(вар имя: Нить, вар владелец: Человек)

Или в C # с использованием автоматического Характеристики с поддерживающими полями, созданными компилятором:

общественный учебный класс Домашний питомец{    общественный нить Имя { получать; набор; }    общественный Человек Владелец { получать; набор; }}

HTML

В HTML следующий шаблон используется в качестве базового пустого шаблона и присутствует на большинстве веб-страниц:

<!DOCTYPE html><html язык="en"><голова>  <мета кодировка=«UTF-8»/>  <заглавие></заглавие></голова><тело></тело></html>

В WHATWG HTML Living Standard определяет, что <html>, <head> и <body> теги можно безопасно опустить в большинстве случаев.[5] В <meta charset="UTF-8"> Тег также может быть опущен, если веб-сервер правильно настроен для отправки кодировки символов вместе с типом содержимого.[6] Google Руководство по стилю HTML / CSS рекомендует опустить все необязательные теги,[7] в результате получается гораздо более компактный шаблон:

<!DOCTYPE html><заглавие></заглавие>

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

Рекомендации

  1. ^ Лэммель, Ральф; Джонс, Саймон Пейтон (2003). «Избавьтесь от шаблона: практичный шаблон проектирования для универсального программирования». Материалы международного семинара ACM SIGPLAN 2003 г. по типам в дизайне и реализации языков. TLDI '03. Нью-Йорк: ACM. С. 26–37. Дои:10.1145/604174.604179. ISBN  9781581136494. S2CID  9472305.
  2. ^ "Шаблон". Dictionary.com. Получено 2018-01-27.
  3. ^ "Шаблон". Мерриам-Вебстер. Получено 2018-01-27.
  4. ^ Франкель, Николас (2007-12-07). "Lombok сокращает ваш шаблонный код". DZone.com. Получено 2017-08-02.
  5. ^ «Стандарт HTML - Синтаксис HTML - Необязательные теги». WHATWG. 2017-05-05. Получено 2017-05-05.
  6. ^ "Требуется ли метатег charset для HTML5?". stackoverflow.com. Получено 2017-05-05.
  7. ^ "Руководство по стилю Google HTML / CSS". google.github.io. Получено 2017-05-05.