W Visual Studio jest parę sposobów aby szybciej kodować oprócz skrótów klawiszowych opisanych tutaj – jednym ze sposobów są wstawki kodu. Jest ich sporo i od czasu do czasu warto sobie je przypomnieć. Dużą zaletą jest to, że nie potrzeba ReSharpera czy innych narzędzi aby móc cieszyć się tymi skrótami. Wystarczy Visual Studio w wersji od 2010.
Z tego posta dowiesz się:
- Co to są wstawki kodu? Jak ich używać itd.
- Jakie wstawki kodu są dostępne w VS?
- Jak tworzyć własne wstawki kodu z możliwością wypełniania pól?
Co to są wstawki kodu? Jak ich używać itd.
„Code Snippet” – po polsku wstawki kodu(nawet ładnie to brzmi). Wstawki kodu to skróty, dzięki którym kod generuje się automatycznie. Wystarczy napisać parę liter i nacisnąć TAB. Dzięki temu można znaczenie przyspieszyć pracę w czasie pisania programów. Poniżej przedstawiam przykłady użycia niektórych oraz, przewodnik jak tworzyć swoje wstawki wraz z uzupełnianiem argumentów.
Przykład 1 – Szybsze budowanie właściwości
Skrót: propfull, prop
Gdy w VS wpisze się „propfull” i naciśnie się dwa razy TAB, to automatycznie wygeneruje się kod do właściwości klasy.
Czyli aby stworzyć poniższe linijki kody wystarczy wpisć „propfull” i dwa razy TAB
private int myVar; public int MyProperty { get { return myVar; } set { myVar = value; } }
Jak zmienić nazwę i typ pola i właściwości?
Po naciśnięciu dwa razy TAB, VS zaznaczy typ pola, możemy wtedy napisać oczekiwany typ i nacisnąć tab. Kod zostanie automatycznie zmieniony tak aby wskazywał na typ wybrany przez Nas. Kolejny raz TAB i możemy zmienić nazwę pola, kolejny raz TAB i zmieniamy nazwę właściwości.
Aby utworzyć taki fragment kodu:
public int MyProperty { get; set; }
Wystarczy wpisać „prop” i nacisnac TAB. Zmiana typu i nazwy odbywa się analogicznie jak w przykładzie powyżej. Jest to intuicyjne.
Przykład 2 – szybsza obsługa konsoli
Skrót: cw
Czasem zmorą jest pisanie stałego fragmentu gry jakim jest
Console.WriteLine("");
W VS może zrobić to szybciej przez skrót „cw”. Gdy napiszemy „cw” i naciśniemy TAB wtedy VS zamieni linijkę w kod powyżej.
Przykład 3 – definiowanie metody Equals
Skrót: equals
Wpisanie tego w VS i naciśniecie TAB powoduje wygenerowanie potrzebnych metod
// override object.Equals public override bool Equals (object obj) { // // See the full list of guidelines at // http://go.microsoft.com/fwlink/?LinkID=85237 // and also the guidance for operator== at // http://go.microsoft.com/fwlink/?LinkId=85238 // if (obj == null || GetType() != obj.GetType()) { return false; } // TODO: write your implementation of Equals() here throw new NotImplementedException(); return base.Equals (obj); } // override object.GetHashCode public override int GetHashCode() { // TODO: write your implementation of GetHashCode() here throw new NotImplementedException(); return base.GetHashCode(); }
Jak widać dzięki wstawką można tworzyć naprawdę sporo kodu. Nie musimy ograniczać się do krótkich instrukcji.
Przykład 4: Bloki try -catch
Skróty – try
wygeneruje blok try i catch
Skrót: tryf
wygeneruje blok try, catch i finally
Przykład 5: Konstruktor
Skrót: ctor
Tworzenie konstruktora. Nic prostszego wystarczy wpisać „ctor” i bezparametrowy konstruktor szybko pojawi się w klasie.
Jakie wstawki kodu są dostępne w VS?
Oto pozostałe wstawki dostępne w Visual Studio 2015.
Skrót | Wstawka |
---|---|
#if | #if true #endif |
#region | #region MyRegion #endregion |
checked | checked { } |
class | class MyClass { } |
ctor | class CodeSnipset { public CodeSnipset() { } } |
cw | Console.WriteLine(); |
do | do { } while (true); |
else | else { } |
enum | enum MyEnum { } |
exception | [Serializable] public class MyException : Exception { public MyException() { } public MyException( string message ) : base( message ) { } public MyException( string message, Exception inner ) : base( message, inner ) { } protected MyException( System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context ) : base( info, context ) { } } |
for | for (int i = 0; i < length; i++) { } |
foreach | foreach (var item in collection) { } |
forr | for (int i = length - 1; i >= 0 ; i--) { } |
if | if (true) { } |
indexer | public object this[int index] { get { } set { } } |
interface | interface IInterface { } |
invoke | EventHandler temp = MyEvent; if (temp != null) { temp(); } |
iterator | public System.Collections.Generic.IEnumerator { throw new NotImplementedException(); yield return default(ElementType); } |
lock | lock (this) { } |
mbox | MessageBox.Show("Test"); |
namespace | namespace MyNamespace { } |
prop | public int MyProperty { get; set; } |
propfull | private int myVar; public int MyProperty { get { return myVar;} set { myVar = value;} } |
propg | public int MyProperty { get; private set; } |
sim | static int Main(string[] args) { return 0; } |
struct | struct MyStruct { } |
svm | static void Main(string[] args) { } |
switch | switch (switch_on) { default: } |
try | try { } catch (Exception) { throw; } |
tryf | try { } finally { } |
unchecked | unchecked { } |
unsafe | unsafe { |
using | using(resource) { } |
while | while (true) { } |
Cześć z nich jest dość zastanawiająca skąd się tam wzięły jednak warto znać te najczęściej używane.
Jak tworzyć własne wstawki kodu z możliwością wypełniania pól?
Aby stworzyć własne wstawki kodu wystarczy stworzyć odpowiedni plik XML. Wstawiamy do niego nazwę, nazwę skróconą (dzięki, której będziemy mogli w VS tworzyć skrót wpisując go), określany do jakiego języka jest to skrót oraz w znacznikach <CDATA> wstawiamy całą potrzebną zawartość.
Taki plik należy wczytać w VS Tools->Snippets Manager. Wybieramy język Visual C# i klikamy Import. Dodany snippet wczytuje się w odpowiednim katalogu i od razu jest gotowy do użycia.
Proponuje utworzyć jedną wstawkę, której nie ma w VS a, która mi się przydaje. Tworzenie prywatniej zmiennej.
private int Temp1;
Kod XML wygląda nastepująco.
Uwaga. Plik, który zawiera xml ze wstawką powinien mieć rozszerzenie .snippet w przeciwnym wypadku nie będzie można go zaimportować do VS.
<CodeSnippets> <CodeSnippet Format="1.0.0"> <Header> <Title>Zmienna prywatna</Title> <Shortcut>pri</Shortcut> </Header> <Snippet> <Declarations> <Literal> <ID>TYPE</ID> <ToolTip>Typ zmiennej</ToolTip> <Default>int</Default> </Literal> <Literal> <ID>NAME</ID> <ToolTip>Nazwa zmiennej</ToolTip> <Default>Temp1</Default> </Literal> </Declarations> <Code Language="CSharp"> <![CDATA[private $TYPE$ $NAME$;]]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>
Najważniejszą częścią jest znacznik <Code> w tym znaczniku deklarujemy w znaczniku [CDATA] całą treść, która ma wyświetlić się użytkownikowi po wpisaniu skrótu „pri” (znacznik <CodeSnippets><CodeSnippet><Header><Shortcut>).
Zmienne miedzy $ są to tzw: literals. Czyli obiekty po których użytkownik będzie mógł skakać używając klawisza TAB.
W przykładzie używamy dwóch $TYPE$ i $NAME$. Ich deklaracja znajduje się w znacznikach <CodeSnippets><CodeSnippet><Snippet><Declarations><Literal>. Znacznik ten posiada 3 gałęzie:
- <ID> – jest to nazwa po której łączmy to co jest w znaczniku CDATA z deklaracją.
- <ToolTip> – podpowiedź, która wyświetli się użytkownikowi gdy najedzie myszką na napis.
- <Default> – wartość początkowa. Taki napis pojawi się użytkownikowi na ekranie.
Po zaczytaniu pliku do VS, skrót jest od razu dostępny.
To był dosć prosty przykład. Opisywaniem całości nie będę się tu zajmował polecam strony MSDN-a, bo jest tego sporo. Przykładowe strony to:
https://msdn.microsoft.com/en-us/library/ms171418.aspx – opis wszystkich znaczników XML-owych dla wstawek kodu.
https://msdn.microsoft.com/en-us/library/ms242312.aspx – specjalne funkcje dostępne dla wstawek.
Innym sposobem tworzenia wstawek kodu jest użycie menadżerów tworzenia wstawek kodu.
- http://www.snippetmanager.net/
- https://visualstudiogallery.msdn.microsoft.com/B08B0375-139E-41D7-AF9B-FAEE50F68392
Nie używałem ich i nie znam ich dokładnej specyfiki. Mogą jednak tworzyć wstawki kodu do C#.
Poniżej przedstawiam co jeszcze można zrobić używając wstawek kodu:
- Dodawać refernecje do innych bibliotek. Takie biblioteki będą automatycznie dodane do usingów.
- W przykładzie powyżej użyłem znacznika <Literals> są to jednak tylko ciągi znaków, można również użyć jest znacznik <Object>, który pozwala dodać normalne obiekty.https://msdn.microsoft.com/en-us/library/ms165396(v=vs.90).aspx
Wstawki kodu znacznie poprawiają szybkość tworzenia kodu. Dzięki możliwości prostego stworzenia nowych, można tworzyć wstawki zawierające w swojej budowie standardy dla danego środowiska pracy. Co znacznie polepszy szybkość pracy i oraz jakość tworzonego kodu (choć tutaj można by się spierać co to jest jakość kodu). Zachęcam do używania wstawek kodu i tworzenia nowych.
Do wstawek kodu polecam dwa pluginy do resharpera: Postfix Templates i Mnemonic Live Templates.
Dzieki za info. Rozumiem, ze sa darmowe?
Tak jest.