Visual Studio – wstawki kodu – jak szybciej kodować

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: propfullprop

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ótWstawka
#if#if true

#endif
#region#region MyRegion

#endregion
checkedchecked
{

}
classclass MyClass
{

}
ctorclass CodeSnipset
{
public CodeSnipset()
{

}
}
cw Console.WriteLine();
do do
{

} while (true);
else else
{

}
enumenum 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 ) { }
}
forfor (int i = 0; i < length; i++)
{

}
foreach foreach (var item in collection)
{

}
forrfor (int i = length - 1; i >= 0 ; i--)
{

}
ifif (true)
{

}
indexerpublic object this[int index]
{
get { }
set { }
}
interfaceinterface IInterface
{

}
invokeEventHandler temp = MyEvent;
if (temp != null)
{
temp();
}
iterator public System.Collections.Generic.IEnumerator GetEnumerator()
{
throw new NotImplementedException();
yield return default(ElementType);
}
locklock (this)
{

}
mboxMessageBox.Show("Test");
namespacenamespace MyNamespace
{

}
proppublic int MyProperty { get; set; }
propfullprivate int myVar;

public int MyProperty
{
get { return myVar;}
set { myVar = value;}
}
propgpublic int MyProperty { get; private set; }
simstatic int Main(string[] args)
{
return 0;
}
structstruct MyStruct
{

}
svmstatic void Main(string[] args)
{

}
switchswitch (switch_on)
{
default:
}
trytry
{

}
catch (Exception)
{
throw;
}
tryftry
{

}
finally
{

}
uncheckedunchecked
{

}
unsafeunsafe
{

usingusing(resource)
{

}
whilewhile (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.

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.

 

4 przemyślenia nt. „Visual Studio – wstawki kodu – jak szybciej kodować

  1. Do wstawek kodu polecam dwa pluginy do resharpera: Postfix Templates i Mnemonic Live Templates.

  2. Pingback: dotnetomaniak.pl

Możliwość komentowania jest wyłączona.