Wiele osób pewnie już od dawna korzysta LINQPad. Osobiście nigdy nie miałem okazji korzystać z tego narzędzia i zawsze myślałem, że w przypadku TDD jest ono po prostu zbędne.
Ostatnio jednak zainstalowałem z ciekawości i okazało się bardzo przydatne w przypadku testowania krótkich snippet’ów. Czasami chcę sprawdzić tylko np. formatowanie daty i wtedy zwykle uruchamiałem osobną instancję Visual Studio, immediate windows w VS albo po prostu pisałem konkretny test. Nie zawsze jednak jest to wygodne i praktyczne.
LINQPad to taki notatnik dla programisty. Nazwa może być myląca bo nie chodzi tutaj tylko o wyrażenia LINQ. Możemy testować jakikolwiek kod C#. Często oczywiście jest to po prostu LINQ. Ostatnio zastanawiałem się, czy Take(10) na tablicy 3-elementowej wyrzuci wyjątek. Za pomocą LINQPad napisałem:
Wszystko stało się jasne bardzo szybko – wizualizacja danych jest bardzo przejrzysta.
Często na blogu poruszałem tematy optymalizacji i analizy kodu IL. W LINQPad możemy również obejrzeć IL:
Narzędzie oczywiście nie służy do pisania kodu, ale sprawdzania różnych operacji. Nierzadko zdarza się, że chcemy sprawdzić np. jak String.Split działa, a za pomocą LINQPad bardzo szybko zobaczymy wynik operacji.
Ponadto, LINQPad jest przydatny w analizie zapytań SQL wygenerowanych przez narzędzia ORM. Na przykład, po kliknięciu w “Add Connection” możemy wybrać konkretny sterownik:
Następnie po wykonaniu zapytania, dostaniemy oczywiście dane:
Przełączając się do zakładki SQL, zobaczymy wygenerowane zapytanie SQL:
Też zdarza mi się używać tego narzędzia. I zawsze jest ten sam problem – jak nazywa się funkcja / komenda, dzięki której wyświetlają się wyniki zapytania. Ach tak, to “Dump”. Przy każdym użyciu LINQPad to samo.
Bardzo przydatne narzędzie – również do nauki. Warto też wspomnieć o nowej wersji 5.0, wspierającej już C# 6.0. Oraz o tym, że narzędzie wspiera też F# oraz VB. A jeśli ktoś się bawi Roslyn, to na pewno mu się spodoba zakładka Roslyn Syntax Tree Visualizer.
LinqPada zacząłem używać wiele lat temu przy okazji nauki Linqa, ale gdy odkryłem, że to narzędzie ma dużo większe możliwości stałem się jego fanem 🙂
I tak obecnie bardzo często używam LinqPada do prototypowania fragmentów aplikacji i algorytmów. Wyniki prezentowane przez Dump() są dużo czytelniejsze niż okienko Watch 🙂