~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ E2C4A011E9F645222EA7B2776097FC6B__1714305420 ✰
Заголовок документа оригинал.:
✰ Boilerplate code - Wikipedia ✰
Заголовок документа перевод.:
✰ Шаблонный код — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Boilerplate_code ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/e2/6b/e2c4a011e9f645222ea7b2776097fc6b.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/e2/6b/e2c4a011e9f645222ea7b2776097fc6b__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 11:16:20 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 28 April 2024, at 14:57 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Шаблонный код — Википедия Jump to content

Шаблонный код

Из Википедии, бесплатной энциклопедии

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

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

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

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

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

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

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

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

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

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

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

#ifndef MYINTERFACE_H 
 #define MYINTERFACE_H 

 ... 

 #endif 

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

На Java и подобных платформах [ править ]

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

Ява [ править ]

общественный   класс   Pet   { 
     частное   строки   имя  ; 
      частное   лицо-   собственник  ; 

      public   Pet  (  строковое   имя  ,   лица   владелец  )   { 
         this  .   имя   =   имя  ; 
          этот  .   владелец   =   владелец  ; 
      } 

     Public   String   getName  ()   { 
         возвращенное   имя  ; 
      } 

     Public   void   setName  (  строковое   имя  )   { 
         this  .   имя   =   имя  ; 
      } 

     Public   Person   getOwner  ()   { 
         вернуть   владельца  ; 
      } 

     Public   void   setOwner  (  человека   Владелец  )   { 
         this  .   владелец   =   владелец  ; 
      } 
 } 

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

В Java 14 для решения этой проблемы были добавлены классы записей. [4] [5] [6]

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

@AllArgsConstructor 
 @Getter 
 @Setter 
 public   class   Pet   { 
     частной   строки   имя  ; 
      частное   лицо-   собственник  ; 
  } 

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

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

 случая  класс   Pet  (  переменной   имя  :   String  ,   переменной   владелец  :   Person  ) 

С# [ править ]

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

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

Начиная с C# 9.0 появилась возможность использовать записи, которые автоматически генерируют классы со свойствами:

общедоступная   запись   Pet  (  строка   Имя  ,   Владелец   )  ; 

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

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

HTML [ править ]

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

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

 </  body  > 
 </  html  > 

Стандарт жизни HTML WHATWG определяет, что <html>, <head> и <body> в большинстве случаев теги можно безопасно опускать. [9] <meta charset="UTF-8"> технически избыточен, когда поступает непосредственно с веб-сервера, настроенного на отправку кодировки символов в заголовке HTTP, однако он становится полезным, когда ответ HTML сохраняется в .html файл, кэш или веб-архив. [10] Руководство по стилю HTML/CSS Google рекомендует опускать все необязательные теги. [11] в результате получается гораздо меньше шаблонов. Консорциум Всемирной паутины утверждает, что элемент <title> не должно быть пустым: [12]

 html 
 <title>  Тест  >  </title> <  !  DOCTYPE 

Питон [ править ]

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

if   __name__   ==   '__main__'  : 
     # Все, что размещено здесь, никогда не будет выполнено в контексте модуля. 
      pass 

 if   __name__   !=   '__main__'  : 
     # Все, что размещено здесь, будет выполняться только в контексте модуля. 
      проходить 

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

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

  1. ^ Ламмель, Ральф; Джонс, Саймон Пейтон (2003). «Откажитесь от шаблонного шаблона: практический шаблон проектирования для универсального программирования» . Материалы международного семинара ACM SIGPLAN 2003 г. по типам в проектировании и реализации языков . ТЛДИ '03. Нью-Йорк: ACM . стр. 26–37. дои : 10.1145/604174.604179 . ISBN  9781581136494 . S2CID   9472305 .
  2. ^ «Шаблон» . Словарь.com . Проверено 27 января 2018 г.
  3. ^ «Шаблон» . Мерриам-Вебстер . Проверено 27 января 2018 г.
  4. ^ «Рекордные занятия» . docs.oracle.com .
  5. ^ «JEP 395: Запись» . openjdk.org .
  6. ^ Эванс, Бен (01 ноября 2020 г.). «Рекорды приходят на Яву» . blogs.oracle.com .
  7. ^ Франкель, Николас (07 декабря 2009 г.). «Ломбок сокращает ваш шаблонный код» . DZone.com . Проверено 2 августа 2017 г.
  8. ^ Мартин Велес; Донг Цю; Ю Чжоу; Эрл Т. Барр; Чжендун Су (5 февраля 2015 г.). «О лексической различимости исходного кода [было: Исследование «пшеницы» и «мякины» в исходном коде]». arXiv : 1502.01410 [ CS ].
  9. ^ «Стандарт HTML — Синтаксис HTML — Дополнительные теги» . ЧТОРГ . 05 мая 2017 г. Проверено 5 мая 2017 г.
  10. ^ «Требуется ли метатег charset для HTML5?» . stackoverflow.com . Проверено 5 мая 2017 г.
  11. ^ «Руководство по стилю Google HTML/CSS» . google.github.io . Проверено 5 мая 2017 г.
  12. ^ «HTML-страница имеет непустой заголовок» . www.w3.org . Проверено 22 июля 2021 г.
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: E2C4A011E9F645222EA7B2776097FC6B__1714305420
URL1:https://en.wikipedia.org/wiki/Boilerplate_code
Заголовок, (Title) документа по адресу, URL1:
Boilerplate code - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)