PowerShell 3: Nowe ISE, edytor skryptów (1).
W poprzedniej części starałem się pokazać, że nowe ISE może być całkiem wygodną alternatywą dla “tradycyjnej” konsoli. Dziś postaram się pokazać jak zmienił się edytor i dlaczego warto rozważyć “przesiadkę” na ISE, nawet jeśli wcześniej korzystaliście z innych edytorów (które mimo wszystkich zmian wprowadzonych w ISE mogą w wielu obszarach lepiej się od ISE sprawdzać).
Edytor skryptów nie musi być doskonały: w wielu przypadkach (i dla wielu autorów skryptów) musi być po prostu… wystarczająco dobry. Jeśli razem z systemem dostajemy za darmo coś, co spełnia nasze oczekiwania – często nie będziemy czuć potrzeby by poszukiwać alternatywy, nawet jeśli jest ona darmowa. Tym bardziej nie zapłacimy za produkt, który jest tylko nieznacznie lepszy od czegoś darmowego i na dodatek “gwarantowanego” na dowolnym komputerze, z którego zamierzamy korzystać. Myślę że właśnie tym należy tłumaczyć fakt, że dwa edytory (do niedawna komercyjne) są obecnie darmowe: PowerSE i PowerShell Plus. Nowe ISE sprawiło, że nie da się już praktycznie zarabiać na edytorze przeznaczonym wyłącznie do skryptów PowerShella.
Co takiego więc zmieniło się w edytorze skryptów w nowym ISE, że stał się on “wystarczająco dobry”?
A świstak siedzi i zawija…
Z mojego punktu widzenia najważniejsze to wsparcie dla “zwijania” kodu i definiowania własnych regionów. Nie da się dostrzec zalet tego rozwiązania przy krótkich skryptach, ale obszerny moduł o wiele łatwiej jest analizować, gdy część kodu można “zwinąć” i skupić się na tych elementach, które w danym momencie zamierzamy modyfikować.
Właściwa klamra na właściwym miejscu
Z tym elementem poniekąd powiązane są kolejne dwa. Podświetlanie par klamr, nawiasów i innych elementów grupujących składnię pozwala określać co dokładnie “domykamy” przy pomocy wybranego elementu. Gdzie zaczyna i kończy się funkcja, czy pętla. Drugi wskazuje dokładnie miejsce, w którym znajduje się jakiś błąd w składni, co często jest skutkiem niewłaściwej ilości takich “domykających” elementów (np. zagnieżdżone pętle, z których jedna nie jest prawidłowo “domknięta”).
Przy dłuższych pętlach/ funkcjach takie udogodnienia zdecydowanie ułatwiają unikanie błędów przy tworzeniu kodu.
Ziarnko do ziarnka
Samo tworzenie kodu można znacznie uprościć i zautomatyzować przy pomocy kolejnego elementu, fragmentów kodu. Domyślnie znajdziemy zaraz po zainstalowaniu kilka, ale sami możemy swobodnie dodawać kolejne, dzięki czemu skrócić możemy dodawanie pewnych elementów składni. Przykładowo: często w czasie tworzenia nowych funkcji korzystam z dekoracji [Parameter()], powtarzając pewne elementy, przy których nie trudno jest o literówkę. Oszczędzamy pamięć, palce i czas na poprawianie takich błędów jednym prostym wpisem:
$Text = @" [Parameter( Mandatory = , ValueFromPipeline = , ValueFromPipelineByPropertyName = , HelpMessage = '', ParameterSetName = '', )] "@ New-IseSnippet -Title Parameter -Description @" Dodajemy [Parameter()] z wszystkimi cudenkami "@ -Text $Text -CaretOffset ($Text.IndexOf('=') + 2)
Tak utworzony fragment kodu zostanie zapisany w folderze Snippets znajdującym się w tej samej lokalizacji co profil użytkownika i dodanego przez niego moduły. By fragment kodu dodać, czy to wbudowany, czy nasz własny – wystarczy kombinacja klawiszy CTRL+J. Kursor zostanie ustawiony na wybranej przez nas pozycji i pozostanie nam jedynie uzupełnić szablon o brakujące dane.
Czy to wszystko? Zdecydowanie nie. Ale o tym już następnym razem…