Snippet (programmering)
Snippet är en programmeringsterm för en liten region med återanvändbar källkod , maskinkod eller text. Vanligtvis är dessa formellt definierade operativa enheter att införliva i större programmeringsmoduler . Snipphantering är en funktion i vissa textredigerare , programkällkodsredigerare , IDE:er och relaterad programvara . Det tillåter användaren att undvika upprepade skrivningar under rutinredigeringsoperationer.
Definition
I programmeringspraxis hänvisar "snippet" snävt till en del av källkoden som bokstavligen inkluderas av ett redigeringsprogram i en fil, och är en form av kopiera och klistra in programmering . Denna konkreta inkludering står i kontrast till abstraktionsmetoder, såsom funktioner eller makron , som är abstraktion inom språket. Snuttar används alltså i första hand när dessa abstraktioner inte är tillgängliga eller inte önskas, till exempel på språk som saknar abstraktion, eller för klarhet och frånvaro av overhead.
Snuttar liknar att ha statisk förbearbetning inkluderad i redigeraren och kräver inte stöd av en kompilator. Å andra sidan betyder detta att utdrag inte alltid kan modifieras i efterhand och är därför sårbart för alla problem med kopiera och klistra in programmering. Av denna anledning används kodavsnitt i första hand för enkla kodavsnitt (med lite logik) eller för beskrivningar, såsom upphovsrättsmeddelanden, funktionsprototyper, vanliga kontrollstrukturer eller standardbiblioteksimport.
Översikt
Snippet management är en textredigeringsfunktion som är populär bland mjukvaruutvecklare eller andra som rutinmässigt kräver innehåll från en katalog med upprepade gånger inskriven text (som med källkod eller boilerplate ). Ofta är denna funktion motiverad eftersom innehållet bara varierar något (eller inte alls) varje gång det skrivs in.
Utdrag i textredigerare
Textredigerare som inkluderar denna funktion tillhandahåller vanligtvis en mekanism för att hantera katalogen och separata "snuttar" på samma sätt som textredigeraren och operativsystemet tillåter hantering av separata filer. Dessa grundläggande hanteringsförmågor inkluderar operationer som att visa, lägga till, redigera, ta bort, sortera, filtrera, gruppera, byta namn på och lagra utdrag i ett arkiv , en katalog eller en databas . Vissa redigerare tillhandahåller en makroförmåga till kodavsnitt som gör att funktionsprototyper och variabla kontrollstrukturer kan genereras baserat på en standardmall.
Snuttar i IDE
Vissa programmerares applikationer som Eclipse , NetBeans och Microsofts Visual Studio (använder TextMate -inspirerade utdrag under huven) och andra IDE inkluderar inbyggda delar av strukturen för enkel kodning.
Andra applikationer som Macromedia Dreamweaver använder dessa kodavsnitt också för webbutveckling .
Snuttar i JIT-kompilatorer
Just-in-time ( JIT ) kompilatorer kan "skarva ihop" förkompilerade sektioner av kod som längre objektkod / maskinkodsegment . Detta minskar tolkningstiden avsevärt och påskyndar samtidigt exekveringen.
Snuttar i skal
Snippets kan användas i kommandoradsgränssnitt som bash, zsh ( GNU Linux /Unix-liknande) eller powershell ( MS Windows ). Funktioner som komplettering och ersättning av platshållare kan eller kanske inte stöds.
Exempel
Överväg processen att byta ut värdena för två variabler, x och y. Förutsatt att du skriver svagt och inte är orolig för namnkollision, representeras detta av koden:
temp = x x = y y = temp
När kodavsnittet sätts in, uppmanas programmeraren att ange värdena för de två parametrarna. Förutsatt att de är av typen foo
och bar
, som är de faktiska namnen på variablerna de vill byta, kommer detta att ge koden:
temp = foo foo = bar bar = temp
Om kodavsnittet ändras senare, säg att använda __temp
istället för temp
, kommer det inte att ändra koden som redan har infogats, utan kommer att användas i efterföljande infogning av kodavsnittet.
Ett utdrag för detta kan representeras som:
temp = $1 $1 = $2 $2 = temp
Konventioner
Utöver de grundläggande hanteringsförmågorna som beskrivits tidigare, kan kodavsnittshanteringsfunktioner klassificeras efter omfattningen av interaktivitet mellan utdrag och textredigeraren eller applikationen som är värd för dem.
Dessa utdragsfunktionsgrupper inkluderar:
- oformaterad text eller "statiska" utdrag
- interaktiva eller "dynamiska" utdrag
- skriptbara utdrag
- Static
- Snippets av denna typ består i första hand av fast text som användaren kan välja att infoga i det aktuella dokumentet. Användaren kan inte ange något annat, förutom kanske markörens position i förhållande till den nyligen infogade texten. Statiska utdrag liknar enkla makron , förutom att makron ofta utvärderas (eller infogas) av ett kommandoradsprogram istället för IDE.
- Dynamiska
- Snippets består av fast text kombinerad med dynamiska element (platshållare) som tillåts modifieras antingen av redaktör eller av användare. Användaren kan specificera både innehållet i de dynamiska elementen, såväl som deras position i förhållande till den fasta texten, som en del av att välja vad som ska infogas i det aktuella dokumentet. Exempel på dynamiska element kan vara variabler som aktuellt datum eller systemtid, eller input från användaren som tillhandahålls via ett GUI, eller input från en annan applikation. (se även: programmerbart makro ).
- Skriptbara
- Snippets består av körbara segment av kod i antingen ett makrospråk eller ett skriptspråk . Skriptbara utdrag ger den största graden av flexibilitet för användaren, även om det beror lite på de programmeringsspråk som stöds av textredigeraren, och om programmeringsspråket är välkänt eller inte, eller speciellt och unikt för den specifika editorn.
Typen av skriptstöd varierar, men kan innehålla funktioner som att köra skalkommandon , tillhandahålla en GUI-dialogruta eller andra metoder för användarinteraktion med operativsystemet; andra applikationer; eller andra underkomponenter av själva värdapplikationen.
Platshållare för utdrag
Platshållare är element i ett utdrag som lämnas för att tillhandahållas av användaren eller annan extern process. Värdena för platshållare bestäms inte förrän texten i kodavsnittet infogas under en redigeringssession.
Platshållare kan ha speciell uppmärkningssyntax som gör att redigeraren kan identifiera gränserna för platshållare i förhållande till den andra texten i den aktuella redigeringsbufferten.
Andra applikationer använder grafiska användargränssnitt och modala dialogrutor som låter användaren ange ett eller flera värden som ska tillhandahållas för platshållarna.
Platshållaridentifierare
Platshållare indikeras vanligtvis med något specialtecken eller teckensekvens för att skilja dem från resten av textavsnittet. Vissa system tillåter att kodavsnittsplatshållare benämns identifierare . Identifierarna kan vara användbara för att stödja sådana funktioner som platshållarduplicering eller platshållartransformation.
Följande exempel använder identifierarna förnamn
, efternamn
och objekt
:
Hej {% first_name %} {% last_name %} , Din försändelse av {% item %} är nu redo att hämtas. Tack {% first_name %} !
Exempel på ett utdrag i TexMate- syntax:
Hej ${ 1 : first_name } ${ 2 : last_name } , Din försändelse på ${ 3 : item } är nu redo att hämtas. Tack ${ 4 : first_name } !
Duplicering av platshållare
Detta gör att användaren kan indikera att värdet som tillhandahålls för en platshållare ska replikeras på flera ställen, i förhållande till hela texten i det programmerbara kodavsnittet. I föregående exempel är den namngivna platshållaren first_name
ett exempel på denna användning.
Platshållartransformation
Detta tillåter användaren att indikera att ett eller flera värden som tillhandahålls för en platshållare ska replikeras och transformeras på andra ställen i texten i det programmerbara kodavsnittet. Användaren kan till exempel ange en dokumentrubrik i en del av kodavsnittet och ange att dokumenttiteln ska upprepas på andra ställen, med den första instansen med versaler och alla andra instanser med små bokstäver.
Utdragsprogrammeringsfunktioner
För program som stöder skriptbara kodavsnitt varierar utbudet av programmeringsfunktioner som stöds. Följande räknar upp några av de funktioner som vanligtvis implementeras för programmerbara kodavsnitt.
Oformatterad text
Även om vanlig text är en grundläggande funktion som ingår även med applikationer som endast stöder icke-programmerbara "statiska" kodavsnitt, används programmerbara kodavsnitt också för att arbeta med vanlig text.
En vanlig komplikation är dock att miljöer som stöder programmerbara utdrag ofta måste göra skillnader mellan vad som räknas som "oformaterad text" och vad som räknas som "programmeringsinstruktioner". Ytterligare komplicerar denna distinktion är det faktum att applikationer som stöder programmerbara kodavsnitt nästan alltid inkluderar stöd för igenkänning av flera programmeringsspråk, antingen genom grundläggande syntaxmarkering eller exekvering av inbäddade kommandon.
Av dessa och andra skäl innebär sändning av vanlig text från programmerbara kodavsnitt nästan alltid att man måste vara försiktig för att undvika problem med syntax- och avgränsningskollisioner .
Konstanter och variabler
Programmerbara kodavsnitt inkluderar ofta en förmåga att upprätta en bindning till ett befintligt variabelområde eller namnområde, från vilket användaren kan välja vilken som helst av olika konstanter eller variabler. Dessa kan inkludera värden som e-postadressen till den för närvarande inloggade användaren på en viss dator, aktuell systemtid och datum eller utdatavärdet för en funktion.
Skriptbara utdrag associeras ofta med en eller flera för närvarande aktiva filer. Följaktligen kan variabler även inkludera miljövariabler och argument som anger filnamn, markörposition och överordnad katalog bland annan statistik som relaterar till filerna i en aktuell redigeringssession.
Tolkad kod
Skriptbara kodavsnitt kan tillåta exekvering av kod på ett eller flera programmeringsspråk . Detta kan inkludera ett eller flera fristående språk, eller ett språk som är specifikt för applikationen där språket är värd.
Alternativ
Det mest grundläggande alternativet till kodsnuttar är subrutiner i bibliotek. Subrutiner kan integreras i ett återanvändbart programvarubibliotek och delas mellan flera programmeringsprojekt.
Designmönster i objektorienterad programmering och funktionell programmering är båda tekniker som kan tillåta programmerare att undvika eller minska övningen att upprepade gånger infoga kodavsnitt i olika delar av kod med små variationer varje gång. I språk i C -familjen används ibland förprocessorer för detta ändamål.
Nackdelen med detta tillvägagångssätt är dock att det är svårare att komma ihåg mönster eller dokumentation.
Programvaruhjälp
Från och med 2021 dök det upp några sofistikerade verktyg för djupinlärning som kan hjälpa till att härleda specifik funktionalitet från en läsbar text och generera motsvarande källkodsavsnitt (t.ex. GitHub Copilot ) .
Se även
- Autoslutförande – datorfunktion som förutsäger slutet på ett ord som en användare skriver
- Kodbas – Källkodssamling som används för att bygga ett system, en applikation eller en komponent
- Kodrefactoring – Omstrukturering av befintlig datorkod utan att ändra dess externa beteende
- Innehållshantering – Process för att hantera information eller upplevelser byggda med en publik i åtanke
- Pastebin – Typ av värdtjänst för innehåll online där användare kan lagra vanlig text
- Scrapbook (Mac OS) – Macintosh-datorprogram
- Versionskontroll – Aktivitet för att hantera version av en eller flera filer
- Webbwidget – Applet avsedd att användas på webbsidor
Exempel på kodavsnitt
- "15 användbara kodavsnittsverktyg som hjälper dig att lagra och hantera ditt kodbibliotek" . onextrapixel.com . 29 september 2009 . Hämtad 18 oktober 2016 .
- "17 lagringsplatser för smarta utdrag" . appstorm.net . Gartner, Inc. 11 februari 2013 . Hämtad 18 oktober 2016 .
- "45+ utmärkta kodavsnittsresurser och arkiv" . smashingmagazine.com . Smashing Magazine . 21 juli 2009 . Hämtad 18 oktober 2016 .
- "Mest gillade appar taggade med 'kodavsnitt' " . alternativeto.net . Alternativ Till . Hämtad 18 oktober 2016 .
- "Sökmotor för kodavsnitt" . www.code-snippets.dev . Hämtad 20 september 2022 .