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

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

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

Происхождение [ править ]

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

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

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

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

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

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

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

#ifndef MYINTERFACE_H #define MYINTERFACE_H...#endif

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

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

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

открытый  класс  Pet  {  частное  имя строки  ; владелец частного лица ;    public  Pet ( String  name ,  Person  owner )  {  this . name  =  name ;  это . owner  =  владелец ;  } общедоступная  строка  getName ()  {  возвращаемое  имя ;  } public  void  setName ( String  name )  {  this . name  =  name ;  } public  Person  getOwner ()  {  возвращение  владельца ;  } public  void  setOwner ( владелец лица  ) { this . owner = владелец ; } }     

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

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

@AllArgsConstructor @Getter @Setter public  class  Pet  {  private  String  name ;  владелец частного  лица  ; }

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

случай  класса  Pet ( вар  имя :  Строка ,  вар  Владелец :  Person )

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

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

Шаблон метода [ править ]

В дополнение к объявлениям, методы на языках ООП также вносят свой вклад в количество шаблонов. Исследование популярных Java-проектов в 2015 году показывает, что 60% методов можно однозначно идентифицировать по появлению 4,6% их токенов, в результате чего оставшиеся 95,4% шаблонов не имеют отношения к логике. Исследователи полагают, что этот результат можно применить к подпрограммам процедурных языков в целом. [5]

HTML [ править ]

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

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

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

<! DOCTYPE html> < заголовок > </ заголовок >

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

  • Директива (программирование)  - языковая конструкция, указывающая, как компилятор должен обрабатывать ввод.
  • Макропроцессор общего назначения  - Макропроцессор, который не привязан к определенному языку или части программного обеспечения или не интегрирован с ним.
  • "Привет мир!" program  - Традиционная компьютерная программа для начинающих.
  • Библиотека (вычисления)  - Коллекция энергонезависимых ресурсов, используемых компьютерными программами, часто для разработки программного обеспечения.
  • Макро (информатика)  - в информатике, краткое представление шаблона.
  • Препроцессор  - программа, которая обрабатывает ввод для другой программы.
  • Фрагмент (программирование)  - небольшая область повторно используемого исходного кода, машинного кода или текста.
  • Обработчик шаблонов  - программное обеспечение, предназначенное для объединения шаблонов с моделью данных для создания итоговых документов.
  • Система веб-шаблонов  - система веб-публикаций, которая позволяет веб-дизайнерам и разработчикам работать с веб-шаблонами для автоматического создания настраиваемых веб-страниц.
  • Scaffold (программирование)  - метод генерации кода или метод генерации проекта.

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

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