Boilerplate code

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

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

Такой код называется шаблонным.

Потребность в шаблонном коде может быть уменьшена с помощью высокоуровневых механизмов, таких как:

  1. метапрограммирование (при котором компьютер автоматически записывает необходимый шаблонный код или вставляет его во время компиляции)
  2. соглашение о конфигурации (которое обеспечивает хорошие значения по умолчанию, уменьшая необходимость указывать детали программы в каждом проекте)
  3. проектирование на основе моделей (которое использует модели и генераторы моделей в код, устраняя необходимость в ручном шаблонном коде).
Contents
Происхождение
Преамбула
В объектно-ориентированном программировании
метод boilerplate
HTML
См. также
Ссылки

Происхождение

Дополнительная информация: Boilerplate - Шаблон (текст)

Термин возник из газетного бизнеса. Колонки и другие материалы, распространявшиеся печатными синдикатами, рассылались подписным газетам в виде готовых печатных форм. Из - за их сходства с металлическими пластинами, используемыми при изготовлении котлов (boiler - котёл), они стали известны как "котловые пластины", а их результирующий текст - "шаблонный текст". Поскольку рассказы, которые распространяли бойлеры, обычно были "наполнителями", а не "серьезными" новостями, этот термин стал синонимом неоригинального, повторяющегося текста.

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

Преамбула

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

#!/usr/bin/perl use warnings; use strict;

Первая строка-это 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 name; private Person owner; public Pet(String name, Person owner) { this.name = name; this.owner = owner; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Person getOwner() { return owner; } public void setOwner(Person owner) { this.owner = owner; } }

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

Если бы имя переменных и владелец были объявлены общедоступными, методы доступа и мутатора не были бы нужны.

To уменьшить количество шаблонных шаблонов, было разработано много фреймворков, например Lombok для Java.

Тот же код, что и выше, автоматически генерируется фреймворком Lombok с использованием аннотаций Java, что является формой метапрограммирования:

@AllArgsConstructor @Getter @Setter public class Pet { private String name; private Person owner; }

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

Например, эквивалент приведенного выше кода Java может быть выражен в Scala, используя только одну строку кода:

case class Pet(var name: String, var owner: Person)

Или в C# с использованием автоматических свойств с созданными компилятором резервными полями:

public class Pet { public string Name { get; set; } public Person Owner { get; set; } }

Шаблонный метод

В дополнение к объявлениям, методы в языках ООП также вносят свой вклад в количество шаблонных шаблонов.

Проведенное в 2015 году исследование популярных Java-проектов показывает, что 60% методов могут быть однозначно идентифицированы по появлению 4,6% его токенов, что делает оставшиеся 95,4% шаблонных неуместными для логики.

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

HTML

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

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <title></title> </head> <body> </body> </html>

Рабочая группа по вебу, гипертексту, приложениям и технологиям (WHATWG) в своём HTML Living Standard определяет, что <html>, <head> и <body> теги могут быть безопасно опущены в большинстве случаев.

Тег <meta charset="UTF-8"> также может быть опущен, если веб-сервер правильно настроен для отправки кодировки символов вместе с типом контента.

Руководство по стилю HTML/CSS Google рекомендует опустить все необязательные теги, что приводит к гораздо более компактному шаблону:

<!DOCTYPE html> <title<>/title>

Share in social media: