Boilerplate -Code

In Computerprogrammierung, Boilerplate -Code, oder einfach Kesselplatte, sind Codeabschnitte, die an mehreren Stellen ohne Variation wiederholt werden. Bei Verwendung von Sprachen, die berücksichtigt werden ausführlichDer Programmierer muss viel Boilerplate -Code schreiben, um nur geringfügige Funktionen zu erfüllen.[1]

Der Bedarf an Kesselplatten kann durch hochrangige Mechanismen reduziert werden, wie z. Metaprogrammierung (Dadurch schreibt der Computer automatisch den benötigten Boilerplate -Code oder fügt ihn ein ein Zeit kompilieren), Konvention über Konfiguration (Dies liefert gute Standardwerte und verringert die Notwendigkeit, Programmdetails in jedem Projekt anzugeben) und Modellgetriebene Engineering (Die Verwendung von Modellen und Modell-zu-Code-Generatoren, wobei die Notwendigkeit des manuellen Boilerplate-Codes beseitigt wird).

Herkunft

Der Begriff entstand aus dem Zeitung Geschäft. Säulen und andere Teile, die von verteilt wurden Drucken Syndikate wurden an die Abonnierung von Zeitungen in Form von vorbereiteten gesendet Druckplatten. Wegen ihrer Ähnlichkeit mit den Metallplatten, die bei der Herstellung von verwendet wurden KesselSie wurden als "Kesselplatten" und ihr resultierender Text bekannt - "Kesselplattentext". Wie die Geschichten, die von Kesselplatten verteilt wurden, normalerweise waren "Füllstoffe"Anstatt" ernsthafte "Nachrichten wurde der Begriff Synonym für unoriginale, wiederholte Text.[2][3]

Ein verwandter Begriff ist Buchhaltungscode, bezieht sich auf Code, der nicht Teil der ist Geschäftslogik ist aber mit ihm verschachtelt, um die Datenstrukturen auf dem Laufenden zu halten oder sekundär zu verarbeiten Aspekte des Programms.

Präambel

Eine Form der Kesselplatte besteht aus Erklärungen, die zwar nicht Teil der Programmlogik oder der wesentlichen Sprache der Sprache Syntax, werden zum Start einer Quelldatei als Zeugnis hinzugefügt. Folgende Perl Beispiel demonstriert die Kesselplatte:

#!/usr/bin/perl verwenden Warnungen; verwenden strikt; 

Die erste Zeile ist a Shebang, der die Datei als Perl -Skript identifiziert, das direkt in der Befehlszeile auf UNIX/Linux -Systemen ausgeführt werden kann. Die anderen beiden sind Pragmas Warnungen und strenge Modus einschalten, die von modischen Perl vorgeschrieben sind Programmierstil.

Dieses nächste Beispiel ist ein C/C ++ Programmiersprache Kesselplatte, #enthalten bewachen.

#ifndef myInterface_h #define myInterface_h ... #endif 

Dies überprüft und setzt ein globales Flag ein, um dem Compiler mitzuteilen, ob die Datei myInterface.h bereits enthalten ist. Da viele Interdependateien möglicherweise an der Zusammenstellung eines Moduls beteiligt sein, vermeidet dies mehrmals denselben Header (was zu Fehlern aufgrund mehrerer Definitionen mit demselben Namen führen würde).

In objektorientierter Programmierung

Im Objektorientierte ProgrammeUnterricht werden häufig mit Methoden für Methoden versehen Erhalten und Einstellen Instanzvariablen. Die Definitionen dieser Methoden können häufig als Kesselplatte angesehen werden. Obwohl der Code von einer Klasse zur anderen variiert, ist er in der Struktur ausreichend stereotyp, dass er automatisch besser generiert wird als von Hand geschrieben. Zum Beispiel im Folgenden Java Klasse, die ein Haustier darstellt, fast der gesamte Code ist Kesselplatte mit Ausnahme der Erklärungen von Haustier, Name, und Eigentümer:

Java

Öffentlichkeit Klasse Haustier {  Privatgelände Saite Name;  Privatgelände Person Eigentümer;  Öffentlichkeit Haustier(Saite Name, Person Eigentümer) {  Dies.Name = Name;  Dies.Eigentümer = Eigentümer;  }  Öffentlichkeit Saite GetName() {  Rückkehr Name;  }  Öffentlichkeit Leere Name einsetzen(Saite Name) {  Dies.Name = Name;  }  Öffentlichkeit Person Getunner() {  Rückkehr Eigentümer;  }  Öffentlichkeit Leere Setowner(Person Eigentümer) {  Dies.Eigentümer = Eigentümer;  } } 

Der größte Teil der Kesselplatte in diesem Beispiel gibt Verkapselung. Wenn die Variablen Name und Eigentümer wurden deklariert als Öffentlichkeit, das Accessor- und Mutatormethoden würde nicht nötig.

Um die Menge an Kesselplatten zu reduzieren, wurden viele Frameworks entwickelt, z. Lombok für Java.[4] Der gleiche Code wie oben wird durch Lombok automatisch generiert Java -Anmerkungen, was eine Form von ist Metaprogrammierung:

@AllargSconstructor @Getter @Setter Öffentlichkeit Klasse Haustier {  Privatgelände Saite Name;  Privatgelände Person Eigentümer; } 

Scala

In einigen anderen Programmiersprachen kann es möglich sein, dasselbe mit weniger Kesselplatten zu erreichen, wenn die Sprache integrierte Unterstützung für solche gemeinsamen Konstrukte hat. Zum Beispiel kann das Äquivalent des oben genannten Java -Code in ausgedrückt werden Scala Verwenden Sie nur eine Codezeile:

Fall Klasse Haustier(var Name: Saite, var Eigentümer: Person) 

C#

Oder in C# mit automatisch Eigenschaften Mit Compiler erzeugte Backing -Felder:

Öffentlichkeit Klasse Haustier {  Öffentlichkeit Saite Name { erhalten; einstellen; }  Öffentlichkeit Person Eigentümer { erhalten; einstellen; } } 

Beginnend mit C# 9.0 gibt es die Möglichkeit, Datensätze zu verwenden, die Klassen mit Eigenschaften automatisch generieren:

Öffentlichkeit Aufzeichnung Haustier(Saite Name, Person Eigentümer); 

Methode Kesselplatte

Zusätzlich zu Erklärungen, auch Methoden In OOP -Sprachen tragen auch zur Menge an Kesselplatten bei. Eine Studie aus dem Jahr 2015 zu beliebten Java -Projekten zeigt, dass 60% der Methoden durch das Auftreten von 4,6% seiner Token eindeutig identifiziert werden können, was die verbleibenden 95,4% Kesselplatte für die Logik irrelevant macht. Die Forscher glauben, dieses Ergebnis würde sich umsetzen Unterroutinen in prozedualen Sprachen im Allgemeinen.[5]

Html

Im HtmlDie folgende Kesselplatte wird als grundlegende leere Vorlage verwendet und ist in den meisten Webseiten vorhanden:

 <html Lang="en"> <Kopf>  <Meta Charset="UTF-8"/>  <Titel>PrüfenTitel> Kopf> <Karosserie> Karosserie> html> 

Das Waswg HTML Living Standard definiert, dass der , und Tags können unter den meisten Umständen sicher weggelassen werden.[6] Das Tag ist technisch überflüssig, wenn er direkt von einem Webserver kommt, der so konfiguriert ist, dass die Zeichencodierung in einem HTTP -Header gesendet wird. Es wird jedoch nützlich, wenn die HTML -Antwort in einem gespeichert wird .html Datei, Cache oder Webarchiv.[7] GoogleDas HTML/CSS -Style Guide empfiehlt, alle optionalen Tags wegzulassen.[8] was zu viel weniger Kesselplatte führt. Das World Wide Web Konsortium gibt dieses Element an muss nicht leer sein:[9]

 <Titel>PrüfenTitel> 

Siehe auch

Verweise

  1. ^ Lämel, Ralf; Jones, Simon Peyton (2003). "Schrotten Sie Ihre Kesselplatte: Ein praktisches Designmuster für die generische Programmierung". Proceedings des ACM Sigplan Internationalen Workshops von 2003 zu Typen in Sprachen Design und Implementierung.Tldi '03.New York: ACM. S. 26–37. doi:10.1145/604174.604179. ISBN 9781581136494. S2CID 9472305.
  2. ^ "Kesselplatte". Dictionary.com. Abgerufen 2018-01-27.
  3. ^ "Kesselplatte". Merriam-Webster. Abgerufen 2018-01-27.
  4. ^ Frankel, Nicolas (2009-12-07). "Lombok reduziert Ihren Boilerplate -Code". Dzone.com. Abgerufen 2017-08-02.
  5. ^ Martin Velez;Dong Qiu;Du zhou;Earl T. Barr;Zhendong SU (5. Februar 2015)."Über die lexikalische Unterscheidbarkeit von Quellcode [war: eine Studie von" Weizen "und" Spreu "in Quellcode]". Arxiv:1502.01410 [CS].
  6. ^ "HTML -Standard - Die HTML -Syntax - Optionale Tags". Waswg. 2017-05-05. Abgerufen 2017-05-05.
  7. ^ "Ist das Charset -Meta -Tag mit HTML5 erforderlich?". stackoverflow.com. Abgerufen 2017-05-05.
  8. ^ "Google HTML/CSS Style Guide". google.github.io. Abgerufen 2017-05-05.
  9. ^ "Die HTML-Seite hat einen nicht leeren Titel". www.w3.org. Abgerufen 22. Juli 2021.