Spis treści:

Kategoria:C#Edytor T4


Edytor szablonów tekstowych T4

Dlaczego Visual Studio nie koloruje składni?

Visual Studio ma wbudowana obsługę szablonów T4, szablony T4 można nawet debugować. Jest jednak jeden drobny problem, problem wynikający z przyzwyczajeń. Przyzwyczailiśmy się do kolorowych edytorów, narzędzi podpowiadających składnię i oczekujemy, że takie udogodnienia będą wszędzie. I tu niemiła niespodzianka - domyślnie Visual Studio nie koloruje składni szablonów T4. Nie trzeba chyba tłumaczyć o ile trudniejsze i mniej przyjemne staje się pisanie kodu bez żadnych narzędzi. Wystaczy otworzyć sobie zwykły notatnik Windows i spróbować napisać choćby prostą aplikację. Cały kod wygląda tak samo, nie odróżnimy słów kluczowych od zmiennych, popełnimy mnóstwo literówek. Polecam przeprowadzić taki eksperymrnt.

A właściwie dlaczego Visual Studio tego nie robi sam? Dlaczego zabrakło tak ważnej funkcji? Nie ma oficjalnych informacji, ale zapewne nie starczyło na to czasu i środków. Podejrzewam, że Intellisense i kolorowanie składni pojawi się w jednej z przyszłych wersji Visual Studio. Co możemy teraz zrobić? Pierwszym krokiem może być zainstalowanie sobie jakiegoś dodatku, który nasz kod pokoloruje i w wielu momentach podpowie.

Tangible T4 Editor

Jednym z rozwiązań jest edytor T4 grupy Tangible Engineering.

Pobierz edytor szablonów T4

Edytor posiada większość podstawowych funkcji, które powinien zawierać szanujący się edytor. Przede wszystkim koloruje składnię. Zamiast takiego szarego kodu...

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
public enum States
{
<#for (int i = 0, bitValue = 1; i < 8; i++, bitValue <<= 1){#>
	Bit<#=i.ToString() #> = <#=bitValue#>,
<#}#>
}

...możemy otrzymać znacznie przyjemniejszy i bardziej czytelny fragment:

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>
public enum States
{
<#for (int i = 0, bitValue = 1; i < 8; i++, bitValue <<= 1){#>
	Bit<#=i.ToString() #> = <#=bitValue#>,
<#}#>
}

Oprócz kolorowania dostajemy w pakiecie funkcję podpowiadania składni, zarówno podczas pisania znaczników, atrybutów, jak i podczas pisania funkcji i kodu:

Ilustracja przedstawia okno podpowiadania składni przez edytor T4. Widać listę rozwijalną z możliwościami zakończenia istrukcji i pomoc na temat metody.
Podpowiadanie składni przez T4 Tangible Editor

Oprócz niezaprzeczalnej wygody z powyższych funkcji warto wspomnieć o pewnych niedogodnościach. Czego w edytorze brak? Mam na myśli darmową wersję, bo istnieje również wersja płatna. Pomimo tego, że twórcy chwalą się parsowaniem i walidacją fragmentów kodu, nie jest to do końca prawda. Wiele błędów wychodzi dopiero na etapie kompilacji. Nie ujrzymy słynnych czerwonych wężyków podkreślających miejsca z błędami składniowymi. Pamiętajmy jednak, że nie jest to w takim edytorze proste. Różne fragmenty kodu mogą się bowiem generować w kilku miejscach i dopiero całość może tworzyć coś spójnego. Szablony T4 dają dużą swobodę. Duża swoboda to duże pole do nadużyć i błędów. Przypomnijmy sobie ile czasu zajęło napisanie Intellisense do języka JavaScript i jak on działa. Robi co może, ale wszystkiego nie załatwi.

Podsumowanie

Reasumując, dopóki Visual Studio nie będzie miał wbudowanych mechanizmów nowoczesnego edytora, jesteśmy zdani na zewnętrzne dodatki. Postaram się w przyszłości rozszerzyć ten wpis o opis innych edytorów lub dodać więcej informacji na temat T4 Tangible Editor. Gdy edytorów będzie więcej, może pokuszę się o jakieś porównanie i zestawienie funkcji. Myślę, że na ten czas rozsądniej będzie umieścić kilka wpisów dotyczących samych szablonów T4.

Kategoria:C#Edytor T4

, 2014-05-15

Brak komentarzy - bądź pierwszy

Dodaj komentarz
Wyślij
Ostatnie komentarze
Dzieki za rozjasnienie zagadnienia upsert. wlasnie sie ucze programowania :).
Co się stanie gdy spróbuję wyszukać:
SELECT * FROM NV_Airport WHERE Code='SVO'
SELECT * FROM V_Airport WHERE Code=N'SVO'
(odwrotnie są te N-ki)
Będzie konwersja czy nie znajdzie żadnego rekordu?