ITnetwork summer 2020
80 % bodů zdarma na online výuku díky naší Letní akci!
Pouze tento týden sleva až 80 % na e-learning týkající se PHP

Lekce 6 - Visual Studio - Pomocníci při psaní kódu

V minulé lekci, Visual Studio - Navigace v souborech, jsme se věnovali navigaci v souborech.

Visual Studio obsahuje spoustu nástrojů, které usnadňují psaní zdrojového kódu. Dnes se na některé z nich podíváme. Začneme se známým IntelliSense.

IntelliSense

IntelliSense je našeptávač, který umí procházet přímo knihovny .NET Frameworku či jiných Frameworků a výchozí knihovny. Umí ale našeptávat i ze všech zdrojových kódů v projektu. Pojďme si to zkusit. Budeme pokračovat s projektem Karel z minula. Na řádek 24 začněte psát cons... Visual studio zatím neudělá nic, aby nás od psaní nerušilo. Zmáčkněme Ctrl + Mezerník, čímž si vynutíme zapnutí IntelliSense:

Rozbalí se seznam možností automatického doplnění kódu. Jako první se nachází const, ale to ještě není to co hledáme, proto dopište písmeno o. Další shoda je Console, což je to, to co hledáme, potvrďte Enter nebo Tab:

Visual studio slovo dokončí. Když zadáme tečku, Visual Studio již začne zkoumat, co vše se v konzoli nachází a co můžeme využít:

Začněte psát w. Již teď vám Visual Studio nabízí shodu s W a zároveň pouze to, co můžeme použít v objektu Console:

Všimněte si, že IntelliSense ukazuje i popisek, co daná metoda/funkce/třída dělá a jaké jsou její parametry. Šipkami se v IntelliSense můžete v nabídce orientovat. Posuňte se dolů o jednu na WriteLine a potvrďte.

Udělejte kulatou závorku, editor ji dokončí, ale to nás nyní nezajímá. IntelliSense zjistil, že chceme psát parametry této funkci a tak nám "našeptá", co se do parametrů této funkce hodí. Šipka vlevo a počet signalizuje počet možností, jak můžeme parametry zapsat. Proklikejte se na 11. možnost zápisu, můžete použít šipky na klávesnici:

Popisek říká, že v tomto parametru se bude zadávat textový řetězec, který metoda doplní zakončením řádku a odešle na standardní výstup. Parametr se jmenuje value a jeho popisek říká, že to je právě ta hodnota, která se vypíše.

Napišme uvozovku. Editor okamžitě doplní koncovou. A do uvozovek napište nějaký text, třeba "Visual Studio je super". Dostaňte se na konec řádku (jako klasicky ve Windows, klávesa End) a doplňte středník ;.

Pokud seznam parametrů znáte, nemusíte nic proklikávat, IntelliSense to pozná a sám vybere nejvhodnější seznam parametrů, který vašemu zápisu odpovídá.

Kde se berou popisky?

Texty nápověd v IntelliSense se berou z dokumentačních komentářů přímo ve zdrojovém kódu a budou se zobrazovat i u našich metod z projektu, pokud nad ně napíšeme správný dokumentační komentář. Ten si lze nechat vygenerovat pomocí napsání trojlomítka /// a ve výsledku vypadá např. takto:

///
/// <summary>Třída <c>Uzivatel</c> je předek pro všechny uživatele systému.</summary>
///
public class Uzivatel
{
    /// <summary>Přihlásí uživatele</summary>
    void Prihlas() {...}
}

Visual Studio případně vygeneruje i parametry pro metodu, pokud nějaké má. Dokumentace se zapisuje v XML syntaxi a můžeme v ní používat různé značky. Např. v ukázce výše se používá <c> pro označení části textu, která bude zvýrazněna jako inline kód, jako třeba zde v článcích. Dokumentace se poté lépe čte.

Ikony v IntelliSense

IntelliSense obsahuje spoustu ikon, které ukazují o jaký typ položky se jedná. U každého jazyka, platformy a technologie se ikony liší, některé technologie různé ikony nepoužívají. Celý seznam ikon a jejich význam se nachází v dokumentaci. V podstatě vám však stačí vědět, jak vypadá:

  • Proměnná - Modrá kostička
  • Třída - Žluto-oranžový diagram
  • Vlastnost - Černý francouzský klíč a
  • Metoda - Růžová kostička

Tyto ikonky uvidíte hodně často, takže si na ně rychle zvyknete. Určitě se je neučte všechny, je to zbytečné. Programuji ve Visual Studiu několik let a některé jsem v dokumentaci viděl poprvé.

Manipulace s řádky

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

V úvodu cvičení jsem vám řekl, ať za řádek 24 napíšeme nějaký kód. Řekněme, že jsem se spletl. Náš kód:

Console.WriteLine("Visual Studio je super.");

potřebujeme na řádku 15, hned za otevírající složenou závorkou. Nejspíš byste teď řádek vyjmuli a vložili, tam kde má být. My to ale uděláme chytřeji.

Přesun řádku nahoru nebo dolů

Pomocí klávesové zkratky Alt a šipka nahoru nebo dolů řádek, na kterém se nachází kurzor, prohodíte buď s horním nebo dolním řádkem. Jinými slovy řádek přesunete ve směru stisknuté šipky. Přesuňme tedy řádek na začátek bloku za {.

Kopírování řádku

Řekněme, že řádek (pokud jste si dokument nerozbombardovali, tak by měl mít číslo 46) s kódem:

Console.ReadKey();

chceme mít dvakrát. Řešením je řádek zkopírovat. Ve Visual Studiu, když nemáte nic vybraného a stisknete Ctrl + C, zkopíruje se celý řádek. Pomocí Ctrl + V ho samozřejmě vkládáme. Vložme ho 2× vždy za příkaz Console.WriteLine bez parametru (řádky 25 a 35).

Vyjmutí řádku

S pomocí klávesové zkratky Ctrl + X můžeme řádek vyjímat stejným způsobem jako kopírovat. Tato zkratka obecně vymaže vybraný text a vloží ho do schránky, asi ji již znáte. Osobně ji častěji používám k odstraňování řádku, což se dá udělat i klávesovou zkratkou Ctrl + L.

Vymažme tedy původní příkazy Console.WriteLine (aktuálně na řádcích 25 a 36).

Nastavení klávesových zkratek

V předchozích 3 podkapitolách jsem zmínil několik klávesových zkratek, které vám teoreticky nemusí vyhovovat. Proto si ukažme, jak si lze klávesové zkratky přenastavit. V nabídce Tools si otevřete nastavení (Tools -> Options) a přesuňte se do skupiny Environment -> Keyboard:

V pravé části okna máme možnosti nastavení klávesových zkratek. Hned nahoře je schéma klávesových zkratek. Můžeme si zde vybrat schéma ze starších verzí Visual Studií nebo verzí jazyků. V prostřední části je pak seznam všech funkcí Visual Studia a ve spodní části lze jednotlivým funkcím přiřadit klávesovou zkratku. Protože funkcí je hodně, je nad seznamem vyhledávací políčko. Když už jsme u těch manipulací s řádky, najdeme si slovo line:

V seznamu jsou funkce do sebe zanořené a oddělené tečkami. Zápis:

EditorContextMenus.CodeWindow.ExecuteLineInInteractive

tedy označuje nástroj ExecuteLineInInteractive, který se týká nástroje CodeWindow a ten zas nástroje EditorContextMenus.

Podstatné pro nás budou položky v nástroji Edit, což je editor zdrojového kódu. Ve verzi 2013 Professional se jedná o nástroje (vypište si nástroje, které vás zaujmou):

  • BreakLine - Zalomí řádek (klasický enter).
  • LineUp, LineDown, LineStart, LineEnd - Posune kurzor na stejnou pozici o řádek níž/výš/na začátek řádku/na konec řádku.
  • LineUpExtend, LineDownExtend, LineStartExtend, LineEndExtend - Vybere oblast od kurzoru ke stejnému místu na předchozím řádku/následujícím řádku/začátkem řádku/koncem řádku.

Ukažme si zde příklad. Pokud přejdeme např. na tuto pozici na řádku:

Po zavolání LineEndExtend získáme následující výběr:

  • LineStartAfterIndentation - Chová se podobně jako LineStart, ale někdy je začátek řádku mimo začátek řádku za odsazením. Tato funkce vynechá mezery nebo tabulátory dosazující řádek.
  • LineStartAfterIndentationExtend - Chová se podobně jako LineStartExtend, ale stejně jako LineStartAfterIndentation vynechává odsazení řádku.
  • LineLastChar - Posune kurzor na poslední znak příkazu. Jinými slovy vynechá středník, složené závorky a podobné znaky.
  • LineLastCharExtend - Vybere oblast od kurzoru po poslední znak příkazu podobně jako LineLastChar.

Opět si udělejme ukázku:

Po zavolání LineLastCharExtend je výběr následující:

  • ScrollLineUp, ScrollLineDown - Posune posuvník (scroll bar) o jeden řádek níže/výše.
  • ScrollLineBottom, ScrollLineCenter, ScrollLineTop - Posune posuvník tak, aby řádek, na kterém je kurzor, byl na spodku/středu/vrchu obrazovky.

Opět příklad:

A výsledek po zavolání ScrollLineTop:

  • TabifySelectedLines, UntabifySelectedLines - Změní mezery za tabulátory a naopak.
  • LineCut - Odebere řádek s umístěným kurzorem a vloží jej do schránky.
  • LineDelete - Vymaže řádek s umístěným kurzorem.
  • DeleteBlankLines - Ve vybrané oblasti odstraní prázdné řádky.
  • LineOpenAbove, LineOpenBelow - Vloží nový řádek před/za řádek s umístěným kurzorem a na nově vzniklý řádek umístí kurzor.
  • IncreaseLineIndent, DecreaseLineIndent - Zvýší/sníží odsazení řádku o jeden tabulátor.
  • LineTranspose - Prakticky jen prohodí vybraný řádek s řádkem o jeden níže.
  • LineStartAfterIndentationPrev, LineStartAfterIndentationNext - Přesune kurzor za odsazení předchozího/nás­ledujícího řádku.

Zkusme si opět nějakou z těchto funkcí:

A po zavolání LineStartAfterIndentationPrev:

Blokový výběr

Pro další funkce je dobré vědět, co je to blokový výběr (někdy označováno jako výběr sloupcový) a jak se vytvoří. Jedná se o to, že někdy potřebujeme vybrat oblast uvnitř řádků. Vezmeme si příklad tohoto textu:

+----+---------------+------------+
| ID | IP            | DATE       |
+----+---------------+------------+
| 1  | 192.168.0.15  | 2015-02-05 |
| 2  | 192.168.0.200 | 2010-03-15 |
| 3  | 192.168.0.10  | 2009-09-09 |
+----+---------------+------------+

Takový formát je výstupem různých exportů, atd. Řekněme, že z něj potřebujeme jen sloupec IP. Za normálních okolností bychom museli okolní sloupce pracně odmazat. Se znalostí vyhledávacích a nahrazovacích nástrojů by to sice nebyl až zas takový problém, ale bylo by to zbytečně pracné. Proto existuje blokový výběr, který funguje při přidržení klávesy Alt a díky kterému si můžeme vybrat libovolnou, obdélníkovou oblast v dokumentu:

Krom možnosti Alt + myš Visual Studio ještě obsahuje další funkce pro tento výběr:

  • LineUpExtendColumn, LineDownExtendColumn - Posune blokový výběr o řádek výše/níže.
  • LineStartExtendColumn, LineEndExtendColumn - Posune blokový výběr k začátku/konci řádku.
  • LineFirstColumn - Posune kurzor na první sloupce řádku (začátek řádku).
  • LineFirstColumnExtend - Vybere oblast od kurzoru k prvnímu sloupci řádku.
  • MoveSelectedLinesUp, MoveSelectedLinesDown - Posune vybrané řádky nahoru/dolů.

Funkce začínající na Emacs a Brief přebírají funkce editorů Emacs a Brief, kterými se nebudeme zabývat

Nastavování klávesových zkratek

Když máte vybrané funkce, které vám přijdou zajímavé, a chcete jich využívat, je dobré si k nim nastavit klávesovou zkratku. Když si je označíte ve spodní části funkcí, zvýrazní se políčko, kde jsou vypsány všechny klávesové zkratky. K jedné funkci totiž můžete mít přiřazených více klávesových zkratek. Pokud chcete nějakou odebrat, vyberete ji a stiskněte "Remove":

Pokud chcete přidat klávesovou zkratku, kliknete do políčka "Press shortcut keys" a stiskněte klávesu nebo klávesovou kombinaci. Vlevo od políčka pak ještě musíte vybrat kontext, kde bude klávesa funkční. Nejčastěji se jedná buď o okna (např. Solution Explorer) a editor kódu (Text Editor):

Po přiřazení se zvýrazní ještě třetí políčko, kde je vypsáno, kde všude je klávesa použitá, aby nedošlo ke kolizím (jedna klávesová zkratka použita u více funkcí).

Nastavte si klávesové zkratky podle libosti a vyzkoušejte si ty již nastavené. Do komentářů pod článkem můžete napsat, o kterých funkcích jste nevěděli, které vám přijdou užitečné, totálně zbytečné a jaké (chytré, aby se lépe zapamatovaly) klávesové zkratky jste si k nim nastavili.

V příští lekci, Visual Studio - Snippety, budou hlavní roli hrát snippety.


 

Předchozí článek
Visual Studio - Navigace v souborech
Všechny články v sekci
Visual Studio
Článek pro vás napsal Michal Žůrek - misaz
Avatar
Jak se ti líbí článek?
12 hlasů
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 (7)

 

 

Komentáře

Avatar
Jan Sála
Redaktor
Avatar
Jan Sála:23.5.2015 11:13

Já osobně jako pomocníka k programování používám Resharper, pro studenty je zdarma a pro takové nezkušené programátory jako jsem já se hodí.

Odpovědět
23.5.2015 11:13
Když nevím co s tím, tak je chyba v compileru.
Avatar
Tomáš Doležal:29.5.2017 0:55

Nainstaloval jsem si VS Community 2017 a učím se na něm podle tohohle článku. Nicméně IntelliSense mi nezobrazuje celou nápovědu k danému prvku (Viz obrázek). Čím by to mohlo být? Díky. :-)

 
Odpovědět
29.5.2017 0:55
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Tomáš Doležal
David Čápka:29.5.2017 10:12

Ono chvilku trvá, než začne napovídat, pokud jsi ho teď spustil, tak by se to mělo za chvíli objevit.

Odpovědět
29.5.2017 10:12
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
jersei
Člen
Avatar
Odpovídá na Tomáš Doležal
jersei:23.6.2017 14:55

Co mas pocit, ze se ti nezobrazuje? Na obrazku intellisense napovida...

 
Odpovědět
23.6.2017 14:55
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.