Snippet (Programmierung)

Beispiel eines Codeausschnitts.

Snippet ist ein Programmierbegriff für eine kleine Region von wiederverwendbarem Bereich Quellcode, Maschinensprache, oder Text. Normalerweise sind diese formell definierte operative Einheiten, die in größere Einbeziehung einbezogen werden sollen Programmiermodule. Snippet -Management ist ein Merkmal einiger Textredakteure, Programm Quellcode -Redakteure, Ides, und die damit verbundenen Software. Damit kann der Benutzer sich im Verlauf der routinemäßigen Bearbeitungsvorgänge wiederholen.[1]

Definition

In der Programmierungspraxis bezieht sich "Snippet" eng auf einen Teil des Quellcodes, der buchstäblich von einem Editor -Programm in eine Datei enthalten ist und eine Form von ist Programmieren kopieren und einfügen.[2] Diese konkrete Eingliederung steht im Gegensatz zu Abstraktionsmethoden, wie z. Funktionen oder Makros, die Abstraktion innerhalb der Sprache sind. Snippets werden daher hauptsächlich verwendet, wenn diese Abstraktionen nicht verfügbar oder nicht gewünscht sind, z.

Snippets ähneln dem im Herausgeber enthaltenen statischen Vorverarbeitung und benötigen keine Unterstützung durch einen Compiler. Auf der anderen Seite bedeutet dies, dass Snippets nach der Tatsache nicht immer modifiziert werden können und daher anfällig für alle Probleme der Kopier- und Einfügen -Programmierung ist. Aus diesem Grund werden Snippets hauptsächlich für einfache Codeabschnitte (mit wenig Logik) oder für Boilerplate verwendet, z.

Überblick

Snippet Management ist eine Texteditor -Funktion, die bei Softwareentwicklern oder anderen, die routinemäßig in Inhalte aus einem Katalog von wiederholt eingegebenem Text benötigen Quellcode oder Kesselplatte). Oft ist diese Funktion gerechtfertigt, da der Inhalt jedes Mal, wenn er eingegeben wird, nur geringfügig (oder gar nicht) variiert.

Snippets in Textredakteuren

Texteditoren, die diese Funktion enthalten, bieten normalerweise einen Mechanismus zur Verwaltung des Katalogs und separate "Snippets" auf dieselbe Weise, wie das Texteditor und das Betriebssystem die Verwaltung separater Dateien ermöglichen. Diese Grundlegende Managementfähigkeiten Fügen Sie Operationen wie Anzeigen, Hinzufügen, Bearbeiten, Löschen, Sortieren, Filtern, Gruppieren, Umbenennen und Speichern von Snippets in a ein Repository, Katalog, oder Datenbank. Einige Redakteure bieten eine Makro -Fähigkeit, Snippets zu ermöglichen, dass Funktionsprototypen und variable Steuerungsstrukturen basierend auf einer Standardvorlage generiert werden.

Snippets in IDES

Einige Programmierer Anwendungen wie z. Finsternis, NetBeansund Microsoft's Visual Studio (Verwendet Textkamerad-inspirierte Ausschnitte unter der Unterhobe) und andere Ides enthalten integrierte Strukturteile zur einfachen Codierung.

Andere Anwendungen wie Makromedien Dreamweaver Verwenden Sie diese Code -Snippets auch für Web Entwicklung.

Snippets in JIT -Compilern

Gerade rechtzeitig (Jit) Compiler können vorkompilierte Codeabschnitte als länger "zusammenkommen" Objektcode/Maschinensprache Segmente. Dies verkürzt die Interpretation erheblich und beschleunigt die Ausführung.

Animiertes Beispiel, das den Einsatz von Snippet in zeigt Power Shell Ise

Snippets in Muscheln

Snippets können in Befehlslinienschnittstellen wie Bash, ZSH (GNU Linux/Unix-artig) oder PowerShell (MS Windows). Merkmale wie Abschluss und Ersetzung von Platzhaltern können unterstützt werden oder nicht.

Beispiel

Betrachten Sie den Prozess des Austauschs der Werte zweier Variablen, x und y. Assuming schwache Typisierung Und wenn ich mich nicht um die Kollision von Namen kümmere, wird dies durch den Code dargestellt:

temp = x x = y y = temp

Wenn der Ausschnitt eingefügt wird, wird der Programmierer für die Werte der beiden Parameter aufgefordert. Angenommen, sie sind Typen Foo und Bar, die die tatsächlichen Namen der Variablen sind, die sie tauschen möchten, ergeben dies den Code:

temp = foo foo = bar bange = temp

Wenn das Ausschnitt anschließend geändert wird, sagen wir, um zu verwenden __Temp Anstatt von TemperaturEs wird nicht den bereits eingefügten Code ändern, sondern in nachfolgenden Einfügungen des Snippets verwendet.

Ein Ausschnitt dafür könnte dargestellt werden als:

temp = $ 1 $ 1 = $ 2 $ 2 $ 2 = TEMP

Konventionen

Zusätzlich zu den zuvor beschriebenen grundlegenden Verwaltungsfähigkeiten können Snippet -Management -Funktionen gemäß dem Umfang der Interaktivität zwischen Snippets und dem Texteditor oder der sie gehosteten Anwendung klassifiziert werden.

Diese Snippet -Feature -Gruppen umfassen:

  • einfache Text- oder "statische" Ausschnitte
  • interaktive oder "dynamische" Ausschnitte
  • skriptierbare Ausschnitte
Statisch
Snippets dieses Typs bestehen hauptsächlich aus festem Text, den der Benutzer in das aktuelle Dokument einfügen kann. Der Benutzer kann nichts anderes angeben, außer möglicherweise der Cursorposition in Bezug auf den neu eingefügten Text. Statische Ausschnitte ähneln einfach wie Makrosmit Ausnahme, dass Makro häufig von a bewertet (oder eingefügt) werden Befehlszeilenprogramm statt ide.
Dynamisch
Snippets bestehen aus festem Text, kombiniert mit dynamischen Elementen (Platzhaltern), die entweder vom Editor oder vom Benutzer geändert werden dürfen. Der Benutzer kann sowohl den Inhalt der dynamischen Elemente als auch deren Position im Verhältnis zum festen Text angeben, um zu wählen, was in das aktuelle Dokument einfügt zu werden. Beispiele für dynamische Elemente können Variablen wie das aktuelle Datum oder die Systemzeit oder die Eingabe des Benutzers sein, der über eine GUI geliefert wird, oder die Eingabe einer anderen Anwendung. (siehe auch: Programmierbares Makro).
Skriptierbar
Snippets bestehen aus laufbaren Code -Segmenten in einer Makrosprache oder a Skriptsprache. Skriptbare Ausschnitte bieten dem Benutzer den größten Grad an Flexibilität, obwohl dies etwas von den vom Texteditor unterstützten Programmiersprachen abhängt und ob die Programmiersprache bekannt oder besonders und einzigartig für diesen spezifischen Editor ist oder nicht.

Die Art der Skriptunterstützung variiert, kann jedoch Funktionen wie das Laufen enthalten ShellbefehleBereitstellung a GUI -Dialog oder andere Methoden der Benutzerinteraktion mit dem Betriebssystem; andere Anwendungen; oder andere Unterkomponenten der Hosting-Anwendung selbst.


Snippet -Platzhalter

Platzhalter sind Elemente in einem Ausschnitt, die vom Benutzer oder anderen externen Prozesse geliefert werden müssen. Die Werte für Platzhalter werden erst bestimmt, wenn der Text des Snippets während einer Bearbeitungssitzung eingefügt wird.

Platzhalter können etwas Besonderes haben Markup -Syntax Dadurch kann der Editor die Grenzen der Platzhalter in Bezug auf den anderen Text im aktuellen Bearbeitungspuffer identifizieren.

Andere Anwendungen eingesetzt Grafische Benutzeroberflächen und Modale Dialogfelder Dadurch kann der Benutzer einen oder mehrere Werte eingeben, die für die Platzhalter geliefert werden sollen.

Platzhalter -Identifikatoren

Platzhalter werden normalerweise durch ein besonderes Zeichen oder eine spezielle Zeichenfolge von Zeichen angezeigt, um sie vom Rest des Snippet -Textes zu unterscheiden. Einige Systeme ermöglichen es Snippet -Platzhalter, benannt zu werden Kennungen. Die Kennungen können nützlich sein, um Merkmale wie die Vervielfältigung des Platzhalters oder die Veränderung des Platzhalters zu unterstützen.

Das folgende Beispiel verwendet die Kennungen Vorname, Nachname, und Artikel:

Hallo {%Vorname%} {%Nachname%}, Ihre Sendung von {%Artikel%} ist jetzt bereit abzuholen. Vielen Dank {%Vorname%}! 

Beispiel eines Ausschnitts in Texmate Syntax:

Hallo $ {1:Vorname} $ {2:Nachname}, Ihre Lieferung von $ {3:Artikel} ist jetzt bereit abzuholen. Vielen Dank $ {4:Vorname}!

Platzhalter Duplizierung

Auf diese Weise kann der Benutzer angeben, dass der Wert für einen Platzhalter an mehreren Stellen im Verhältnis zum gesamten Text des programmierbaren Snippets repliziert werden sollte. Im vorherigen Beispiel der genannte Platzhalter Vorname ist ein Beispiel für diese Verwendung.

Platzhalterumwandlung

Auf diese Weise kann der Benutzer angeben, dass ein oder mehrere Werte für einen Platzhalter an anderen Stellen innerhalb des Textes des programmierbaren Snippets repliziert und transformiert werden sollten. Zum Beispiel kann der Benutzer einen Dokumenttitel in einem Teil des Snippets angeben und angeben, dass der Dokumenttitel an anderen Stellen wiederholt werden sollte, wobei die erste Instanz All-Suppercase und jede andere Instanz niedrigerer Fall ist.

Snippet -Programmierfunktionen

Für Anwendungen, die unterstützen skriptierbar Snippets, der Bereich der unterstützten Programmierfunktionen variiert. Die folgenden Aufzählungen einige der Funktionen, die üblicherweise für programmierbare Ausschnitte implementiert werden.

Einfacher Text

Obwohl einfacher Text ein grundlegendes Merkmal ist, das auch mit Anwendungen enthalten ist, die nur nicht programmierbare "statische" Snippets unterstützen, werden auch programmierbare Ausschnitte für die Arbeit mit einfachem Text verwendet.

Eine häufige Komplikation ist jedoch, dass Umgebungen, die programmierbare Snippets unterstützen, häufig zwischen dem, was als "einfacher Text" zählt, und dem, was als "Programmieranweisungen" zählt. Die Tatsache, dass Anwendungen, die programmierbare Snippets unterstützen Satzstellung markieren oder Ausführung eingebetteter Befehle.

Aus diesen und anderen Gründen bedeutet die Ausgabe einfacher Text von programmierbaren Snippets fast immer, dass sie Probleme haben, Probleme mit Syntax und Grenzkollisionen.

Konstanten und Variablen

Programmierbare Ausschnitte beinhalten häufig die Fähigkeit, eine Bindung an einen vorhandenen zu etablieren variabler Umfang oder Namespace, aus dem der Benutzer verschiedene Konstanten oder Variablen auswählen kann. Dies können Werte wie die E-Mail-Adresse des aktuell angemeldeten Benutzers auf einem bestimmten Computer, der aktuellen Systemzeit und des aktuellen Datums oder des Ausgabwerts einer Funktion enthalten.

Skriptable Snippets werden häufig einem oder mehreren aktuell aktiven Dateien zugeordnet. Folglich können auch Variablen einschließen Umgebungsvariablen und Argumente, die den Dateinamen, den Cursorposition und das übergeordnete Verzeichnis unter anderen Statistiken in Bezug auf die Dateien in einer aktuellen Bearbeitungssitzung angeben.

Interpretierter Code

Skriptable Ausschnitte können die Ausführung von Code in einem oder mehreren ermöglichen Programmiersprachen. Dies kann eine oder mehrere eigenständige Sprachen oder eine Sprache umfassen, die für die Anwendung, in der die Sprache gehostet wird, spezifisch ist.

Alternativen

Die grundlegendste Alternative zu Code -Snippets ist Unterroutinen in Bibliotheken. Unterroutinen können in eine wiederverwendbare Integration integriert werden Softwarebibliothek und zwischen mehreren Programmierprojekten geteilt.

Designmuster in objektorientierter Programmierung und Funktionelle Programmierung, sind beide Techniken, mit denen Programmierer die Praxis des wiederholten Einsetzens von Snippets in verschiedenen Code -Teilen mit geringfügigen Variationen jedes Mal vermeiden oder verringern können. In Sprachen in der C Familie, Präprozessoren werden manchmal für diesen Zweck verwendet.

Der Nachteil dieses Ansatzes ist jedoch, dass es schwieriger ist, sich Muster oder Dokumentation zu erinnern.

Softwareunterstützung

Ab 2021 einige anspruchsvolle tiefes Lernen Tooling entstanden, die dazu beitragen können, bestimmte Funktionen aus einem menschlichen lesbaren Text zu schließen und entsprechende Quellcode -Snippets zu generieren (z. Github Copilot).[3][4]

Siehe auch

  • Autocomplete- Computerfunktion Vorhersage des Endes eines Wortes, das ein Benutzer eingreift
  • Codebasis-Quellcode-Sammlung zum Erstellen eines Systems, einer Anwendung oder einer Komponente
  • Code Refactoring- Umstrukturierung des vorhandenen Computercodes, ohne sein externes Verhalten zu ändern
  • Content -Management- Prozess der Verwaltung von Informationen oder Erfahrungen, die mit Blick auf ein Publikum aufgebaut wurden
  • Pastebin- Art des Online -Inhalts -Hosting -Dienstes, bei dem Benutzer einen einfachen Text speichern können
  • Sammelalbum (Mac OS)
  • Versionskontrolle- Aktivität der Verwaltung der Version eines oder mehrerer Dateien
  • Web -Widget- Applet, das auf Webseiten verwendet werden soll

Verweise

  1. ^ "Gedit/Plugins/Snippets". Archiviert von das Original Am 2012-08-25. Abgerufen 2010-01-09. Beispiel für das Feature im Gedit -Editor.
  2. ^ Kim, Miryung; Bergman, Lawrence; Lau, Tessa; Notkin, David (2004). "Eine ethnografische Untersuchung von Kopier- und Einfügen -Programmierpraktiken in OOPL" (PDF). Proceedings: 2004 Internationales Symposium für empirische Software -Engineering, ISESE 2004: 19–20 August 2004, Redondo Beach, Kalifornien, Kalifornien. Los Alamitos, CA: IEEE. S. 83–92. ISBN 978-0-7695-2165-7. OCLC 326620442. Für jede C & P -Instanz haben wir auch die Beziehung zwischen einem kopierten Code -Snippet und Code an anderer Stelle in der Codebasis festgestellt.
  3. ^ H. M. Le, Triiet; Chen, Hao; Ali Babar, Muhammad (13. Februar 2020). "Deep Learning für Quellcode -Modellierung und -generierung: Modelle, Anwendungen und Herausforderungen" (PDF). Die Universität von Adelaide.{{}}: CS1 Wartung: URL-Status (Link)
  4. ^ "GitHub Vorschau stellt ein neues KI -Tool vor, das Codierungsvorschläge macht". Techcrunch. Abgerufen 2021-07-25.

Beispiele für Codeausschnitte