IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

7. diel - Visual Studio - Snippet

V minulej lekcii, Visual Studio - Pomocníci pri písaní kódu , sme sa venovali pomocníkom pri písaní kódu. Dnešná tutoriál bude o už sľúbených Snippet.

Snippety

Jednou zo zásadných funkcií Visual Studia, ktorá výrazne zjednodušuje písanie opakujúceho sa zdrojového kódu, sú snippety. Opäť si otvoríme súbor regex.cs a kurzor presunieme za začiatok bloku triedy program a vytvoríme za ním nový riadok.

Vloženie Snippet

Snippet možné vložiť kliknutím pravého tlačidla myši cez možnosť Insert Snippet.

Visual Studio

Otvorí sa zoznam zložiek obsahujúci snippety. Vyberme zložku C# a snippet s názvom prop. Dvakrát naň dvakrát kliknite.

Visual Studio

Do zdrojového kódu sa vloží definície vlastnosti v C# s 2 zvýraznenými časťami (dátovým typom a názvom vlastnosti).

Visual Studio

Obe časti možno prepisovať a presúvať sa medzi nimi dá klávesom Tab. Jedná sa o veľmi rýchly spôsob, ako napísať vlastnosť v C #. Výhoda Snippet je že nemusíte písať omáčku okolo, ako je slovo public a oblasť get a set v zátvorkách.

Vkladanie Snippet z ponuky je celkom krkolomné a preto existuje ešte jedna možnosť, ako ich vložiť, a to tak, že do kódu ručne napíšeme ich názov a stlačíme Tab (v predchádzajúcich verziách Visual Studia sa musel tabulátor stlačiť 2 ×). Vyskúšajme si to.

Napíšme for a stlačme Tab. Automaticky sa doplní blok cyklu for s označenými voľbami pre názov premennej a koncovú podmienku.

Visual Studio

Všimnúť si môžeme, že snippet nie je moc dobre odsadený - napríklad odsadenie zložených zátvoriek nie je podľa našich predstáv (aj keď ich máme vybraté v nastavení). Neskôr, až budeme vytvárať snippety, sa dozvieme, prečo to mu tak je. Teraz sa zmierme s tým, že odsadenie budeme musieť spravit ručne.

Tvorba vlastného Snippet

Veľkou výhodou je možnosť vytvoriť si svoje vlastné snippety.

Reprezentácie Snippet

Snippet je reprezentovaný ako XML súbor, ktorý definuje, ako bude snippet vyzerať, kde sú oblasti na zadávanie hodnôt, atď ...

Existujúce snippety

Na úvod sa môžeme pozrieť, ako vyzerajú existujúce snippety. V ponuke tools si otvoríme, Code snippet manager.

Visual Studio

Otvorí sa správca Snippet, kde sú všetky načítané snippety.

Visual Studio

Snippety sú zoradené podľa programovacieho jazyka a predvolený je (podľa abecedy) CSS, prepnite si jazyk teda na C #. Asi tušíte, že sa to robí select-boxom Language.

Visual Studio

Túto štruktúru, ktorú vidíme, sme už videli, keď sme vkladali snippet do kódu. Vyberme teda opäť Visual C# a treba cyklus for.

Visual Studio

V pravej časti okna uvidíme informácie, ako je popis Snippet, jeho skratku, aké typy snippet podporuje a autora Snippet. Hore je potom políčko s cestou k Snippet. Skopírujte si cestu so zložkou k snippetům a otvoríme ju v prieskumníkovi Windows.

Visual Studio

Vidíme, že všetky snippety sú v tejto zložke pomenované klasicky podľa svojho názvu a majú príponu .snippet. Otvoríme si snippet for. Snippet sa otvorí vo Visual Studiu (ak máte prenastavenie asociácie súboru, tak si ho otvorte vo Visual Studiu) a uvidíme jeho štruktúru XML.

Visual Studio

Koreňovým elemente je element <CodeSnippets> (pozor na množné číslo). V tomto elementu sa potom nachádza elementy (v prípade súboru for.snippet len jeden) <CodeSnippet>. <CodeSnippet> má nejakú hlavičku a nejaké telo. V hlavičke sú definované informácie o Snippet a v jeho tele je potom deklarácie a samotný snippet.

Prakticky: tvorba vlastného Snippet

Ako najjednoduchšie príklad si vytvoríme snippet, ktorý vloží meta hlavičky s informáciami, aby webové prehliadače načítania stránky neukladali do cache. Snippet sa teda budeme používať v jazyku HTML.

V ponuke file vyberme New> File a vyhľadajme si XML súbor.

Visual Studio

Potvrď Open.

Vytvorme koreňový element <CodeSnippets> a ako menný priestor mu nastavme:

http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet

V tomto okamihu Visual Studio vie, aké elementy môžeme tvoriť, a okamžite nám podčiarkne koncovú značku s varovaním, že element CodeSnippets nie je kompletný. Varovanie vidíme v okne Error List.

Visual Studio

Poznámka: Ak XML nerozumiete, nemusíte to moc riešiť. Menné priestory prakticky označujú, k akému formátu sa bude dokument validovať. Nastavujú sa ako parameter xmlns a platí k elementu, kde sú nastavené a potomkom tohto elementu.

Náš kód zatiaľ vyzerá nasledovne.

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">

</CodeSnippets>

Vložme si nový element <CodeSnippet>. IntelliSense už napovedá.

Visual Studio

Teraz nám Visual Studio označí element <CodeSnippet> s 2 varovaniami. Jednak musíme špecifikovať parameter Format a po druhé musí mať náš <CodeSnippet> hlavičku. Doplňme teda parameter Format na hodnotu 1.0.0. Aktuálne podporované snippety majú práve túto verziu, ak by sme zvolili inú verziu a Visual Studio tejto verzii nebude rozumieť, snippet nebude načítaný (nebude fungovať). Už nám svieti len jedno varovanie a to, že snippet musí mať hlavičku. IntelliSense už napovedá vhodné elementy, jedná sa o element <Header>. Posledná vec, ktorá sa mu nebude páčiť, je, že nám vo Snippet chýba element <Snippet>, ktorý definuje samotný kód Snippet. Poradie hlavičky a elementu <Snippet> nesmiete zameniť, inak sa nebude jednať o validný Snippet a Visual Studio vám ho podčiarkne s varovaním. Zdrojový kód Snippet vyzerá nasledovne:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
    <Header>

    </Header>
    <Snippet>

    </Snippet>
</CodeSnippet>
</CodeSnippets>

Hlavička Snippet

IntelliSense už napovedá. Takže ihneď (bez toho aby sme blúdili v dokumentácii) vieme, aké hodnoty musíme (mali by sme) vyplniť.

Visual Studio

Pôjdeme teda od zhora.

Autor

Elemet autor obsahuje meno alebo inštitúcii autora. Uveďme teda svoje meno.

<Author>Michal Žůrek</Author>

Description

Popis, ktorý výstižne označí, k čomu snippet slúži. V našom prípade sa jedná o zabránení cachovanie.

<Description>Disable cache by meta tags in head element</Description>

HelpUrl

<HelpUrl> označeju adresu, ktorá sa otvorí pri vyvolaní pomocníka (F1). Využijeme odkazu potrebné:

http://stackoverflow.com/...1133/2229538

<HelpUrl>http://stackoverflow.com/a/1341133/2229538</HelpUrl>

Keywords

Keywords označuje kľúčové slová. Zadávajú sa v podelementech KeyWord. Použijeme potrebné kľúčové slová web browsers, cache, force, disable:

<Keywords>
    <Keyword>web browsers</Keyword>
    <Keyword>cache</Keyword>
    <Keyword>force</Keyword>
    <Keyword>disable</Keyword>
</Keywords>

Shortcut

Označuje, pod akou skratkou budeme snippet vyvolávať. Mal by byť krátky, pretože keby bol dlhý, začínal by postrádať zmysel a ideálne by mal byť ľahko zapamätateľný.

Spomeňme si na snippet prop, ktorý označoval Property.

<Shortcut>discach</Shortcut>

SnippetTypes

Typy Snippet môžeme použiť 2 (existujú 3, ale ten 3. z nejakého dôvodu podľa dokumentácie nesmieme používať). Existuje SurroundsWith a Expansion. SurroundWith vkladá snippet okolo vybranej oblasti a Expansion ku kurzoru. Nám bude stačiť Expansion. Tretí typ Refactoring slúžia v C# refactoring a nás nebude zaujímať, pretože ho rovnako nemôžeme vo vlastných Snippet využiť (a ani by to nemalo zmysel).

Typ sa udáva v elementu <SnippetType>:

<SnippetTypes>
    <SnippetType>Expansion</SnippetType>
</SnippetTypes>

Title

Je samotný titulok Snippet. Ide o názov v správcovi Snippet a v ponuke výberu Snippet:

<Title>Disable browser cache</Title>

Podľa programátorských zásad si zoraďte elementy podľa dôležitosti od zhora nadol (presúvať riadky hore a dole už viete, dúfam, že nebudete vynímať a vkladať :) ) A potom prejdime k samotnému <Snippet>.

Obsah Snippet

Obsah Snippet sa udáva v elementu <Code>. Code vyžaduje parameter Language, ktorý špecifikuje, o aký programovací jazyk sa jedná. Obsah kódu sa udáva v sekcii CDATA.

<Code Language="html">
<![CDATA[
    ]]>
</Code>

V sekcii CDATA budeme mať naše meta hlavičky, ktoré nájdeme v odkaze pre nápovedu.

Celý element <Code> bude vyzerať nasledovne:

<Code Language="html">
<![CDATA[<meta http-equiv="cache-control" content="max-age=0" />
    <meta http-equiv="cache-control" content="no-cache" />
    <meta http-equiv="expires" content="0" />
    <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
    <meta http-equiv="pragma" content="no-cache" />]]>
</Code>

To je pre náš najjednoduchšie snippet všetko, uložte ho s príponou .snippet (File> Save).

Visual Studio

Inštalácia Snippet

To že sme snippet vytvorili je síce pekné, ale Visual Studio ešte neviem, že ho chceme použiť. Otvoríme preto znova správcu Snippet.

Pridanie celé zložky

Visual štúdio vie načítať snippety z priečinka. Robí sa to tlačidlom Add ... a následným vybraním zložky.

Import Snippet

Snippety možno importovať aj jednotlivo pomocou tlačidla Import ... a následným vybraním Snippet.

Snippety možno načítať aj zo siete. Hodí sa to najmä vo firmách, kedy zamestnanci medzi sebou môžu snippety zdieľať.

Snippet si importujte alebo nechajte načítať zložku. Potom vytvorme novú webovú stránku HTML (Fie> New> File> HTML page) a skúsme si vložiť snippet. Uvidíte, že zdrojový kód sa vloží.

V nasledujúcom kvíze, Záverečný test - Visual Studio, si vyskúšame nadobudnuté skúsenosti z kurzu.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 115x (623 B)
Aplikácia je vrátane zdrojových kódov v jazyku C#

 

Predchádzajúci článok
Visual Studio - Pomocníci pri písaní kódu
Všetky články v sekcii
Visual Studio
Preskočiť článok
(neodporúčame)
Záverečný test - Visual Studio
Článok pre vás napísal Michal Žůrek - misaz
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje tvorbě aplikací pro počítače, mobilní telefony, mikroprocesory a tvorbě webových stránek a webových aplikací. Nejraději programuje ve Visual Basicu a TypeScript. Ovládá HTML, CSS, JavaScript, TypeScript, C# a Visual Basic.
Aktivity