Wstęp

Jakiś czas temu pojawiła się “nowa, cudowna, itd.” wersja Visual Studio; tym razem 2010. Pojawiła się oficjalnie znaczy, bo na wersji RC pracowałem już od jakiegoś czasu. Jednak na temat wersji testowej nie należało się wypowiadać, bo jak wiadomo może zmienić się sporo i nic nie jest pewne. Cóż… sporo faktycznie się zmieniło, ale większość z sensownych zmian została pominięta w ostatecznym wydaniu. Za to te “nowości'”, które dotrwały do wersji kandydującej mogę generalnie podzielić na dwie kategorie (w sumie nawet na 3): rzeczy związane z edytorem kodu i generalnie pisaniem kodu, narzędzia programistyczne oraz narzędzia i obsługa innych “cudownych” wynalazków Microsoftu, takich jak np. najnowszy Sharepoint, który doczekał się oficjalnego wsparcia w Visual Studio. No ale po kolei.

Co nowego?

Pierwszą rzeczą jaką jest wymieniana w kontekście tej premiery to nowy “wow” interfejs graficzny, który rzuca na kolana… no i w ogóle Wooooow… Tak, właśnie. Wymienianie w ogóle tego jako pierwszej zalety nowego rozwiązania jest strzałem w stopę dla Microsoftu, bo mówi wyraźnie, że nie liczą się dla nich obecnie faktyczne możliwości tylko jakieś wizualne bzdety, które programiście raczej nie będą do niczego potrzebne w jego pracy. Chociaż owszem, dobry interfejs nie jest zły (tutaj dobrym przykładem jest Microsoft Expression, który napisany został bardzo dobrze i do tego w sposób bardzo przemyślany). Na czym polega jednak zasadniczy problem? Microsoft był nękany prośbami zaprezentowania technologii WPF w jakimś poważnym rozwiązaniu (Expression nie jest niestety zbyt popularne ;)), żeby pokazać, że jest to technologia przyszłościowa,  funkcjonalna i wydajna. Nie pokazał. A raczej pokazał w najnowszym Visual Studio bardzo dobrze, że technologia ta faktycznie poprawia jakość i wygląd interfejsu graficznego, ale jednocześnie, że jest beznadziejnie mało wydajna.

Jak dla mnie samo rozumowanie, które zakłada łączenie technologii WPF z jakimiś NIE-biznesowymi rozwiązaniami jest błędne i bezsensowne. To są przecież zupełnie inne zastosowania. Ale cóż… od dłuższego czasu uważam, że Microsoft powinien zamknąć część gałęzi swojej działalności i zostać tylko przy tych rzeczach, które jeszcze jakoś im wychodzą, czyli Windows, Office i klasyczne Visual Studio. Jak mają z kogo zerżnąć rozwiązanie, to wyjdzie im całkiem dobrze, jednak gdy używają własnej inwencji, to już bywa bardzo różnie.

Ok, ale wystarczy tego negatywnego cienia w poście, zajmijmy się innymi nowościami :)

Visual Studio 2010

Z innych nowości prezentowanych na filmikach i artykułach, które wychwalały nowe funkcjonalności pakietu (także z tych oficjalnych źródeł) warto wymienić coś takiego jak np. podświetlanie aktywnego słowa i wszystkich innych jego wystąpień w otwartym dokumencie (wspomnieć należy, że tylko kod jest podświetlany, bez komentarzy i zawartości stringów). Inny feature to taki, że można zaznaczyć blok tekstu (z altem znaczy) i zacząć pisać. Wtedy tekst, który wpiszemy będzie pojawiał się w każdej zaznaczonej linijce. Cóż… jest to przydatna funkcja… którą od dłuższego czasu miał np. mój ulubiony open source’owy Notepad++. Jednak nie wszystkie jego opcje zostały w najnowszym VS zaimplementowane, a szkoda. Z tego co jednak widziałem w ReSharperze dodane zostały brakujące funkcjonalności, ale to ReSharper i nie jest częścią VS.

Extension Manager

Ponadto w najnowszym Visual Studio dodano wreszcie coś takiego jak Extension Manager (wreszcie!) i to działa nawet nieźle. W jednym miejscu zarządzanie zainstalowanymi pluginami, możliwość bezpośredniej instalacji z listy, bez szukania dodatków w google oraz dostęp do aktualizacji pakietu. Działa trochę wolno, większość dodatków na liście to dodatki komercyjne i brak możliwości filtrowania darmowej open source;owej zawartości – to jedyne wady jakie znalazłem (co jest generalnie nieźle jak na ostatnie technologie Microsoftu :))

Z innych rzeczy, jakie pojawiły się w obecnej wersji to możliwość debugowania wielu wątków na raz. Nigdy z tego nie potrzebowałem korzystać, choć często Visual Studio sam włączał mi tę metodę podczas zwykłego debugowania przez co trudno było ustalić co się dzieje (w szczególności w SharePoint) Generalnie, podczas procesu debugowania mamy listę wątków, do których można się podłączyć. Oczywiście wszystkie mają bardzo pomocne nazwy (np. 24 razy wypisana ta sama nazwa programu i szukaj :D) jednak jak już się robi coś rozbitego na wiele zarządzalnych procesów, to pewnie nie ma z tym większego problemu.

To tyle nowości z takiego pobieżnego wyliczenia (nie wszystkich używam, nie wszystkie są godne wymienienia). Teraz czas na podsumowanie najnowszego Visual Studio:

Wady

  • Niesamowicie wolne. Zastosowanie WPF okazało się totalną porażką (nawet biorąc pod uwagę fakt, że wykorzystuje on do renderowania grafiki i tekstu GPU zamiast CPU, co jest specyfiką WPF). Proces włączania aplikacji jest jeszcze na poziomie poprzedniego VS, ale np. ładowanie solucji kilkuprojektowej jest dużo wolniejsze. Poza tym to renderowanie grafiki i tekstu też zachowuje się dość losowo. Standardem jest, że czasem przewijanie tekstu się “zawiesza” przez co przewinięcie dłuższego tekstu z góry na dół rolką lub paskiem jest bardzo uciążliwe (wolne strasznie)
  • Bardzo niestabilne. Często, czyli ponad 1 na dzień występuje jakiś problem, który zawiesza działania aplikacji; ilość problemów rośnie diametralnie w górę jeśli używa się wersjonowania Team Explorer z Team Foundation Server) – często zawiesza się wszystko przy pobieraniu najnowszej wersji, a dokładniej przy synchronizacji pobranych danych. Poza tym występują czasem śmieszne błędy, które wyłączają niektóre przyciski. Jakieś 3 razy przestał działać klawisz strzałka do góry. I za każdym razem jak się nacisnęło strzałkę do góry, to pojawiał się błąd w cudownym, zabierającym focus podczas pisania, Message Boxie. Po prostu wypas ;/
  • Tworzenie Workflowów (stanowych czy też nie) jest absolutnie niedorobione, o udokumentowaniu już nie wspominając. Wystarczy kliknąć w zapisany WF (nic nie przenosić i nie edytować; po prostu kliknąć w puste miejsce) by zaszły jakieś zmiany w całym WF; czasami wynikiem tego kliknięcia jest usunięcie funkcji od bloczka, który był zaznaczony przed kliknięciem. Ponadto edycja workflowów jest niesamowicie wolna i męcząca (operacja zapisu, przełączenia do kodu trwa około 4-5 sekund). Dodatkowo jeśli Workflow jest niepoprawny (np. niezgodny będzie Corelation Token, lub niepodany na formatce będzie poprawny parametr w właściwościach) to będzie on bez większych problemów deployowalny, ale za każdym razem gdy wystartuje otrzymamy bardzo pomocny komunikat ‘Error occured’ lub ‘Failed on start’ bez żadnej dodatkowej informacji i, co najlepsze, bez możliwości ustalenia co się stało przez debugera (bo on też się wywali, kiedy będziemy debugować WF)
  • W sumie osobno mógłbym debugowanie wypisać. Podczas normalnego debugowania VS lubi się przełączać między innymi procesami, które akurat nas niezbyt interesują, albo dołączać inne procesy do naszego wątku debugowania, przez co co linijkę przeskakujemy między kolejnymi wątkami. Jest to chyba niewyłączalne. Inną rzeczą jest debugowanie workflowów. Mega featurem miało być debugowanie poza kodem także przepływu na bloczkach. Jednak zapomniano chyba tego zaimplementować poprawnie, bo często debuger ładuje diagram jakiejś starej wersji workflowa i go na siłę chce analizować. Jak mu się uda, to widzimy naszą starą wersję diagramu i aktualną wersję kodu pod spodem. Jak debuger dojdzie do miejsca, gdzie nie ma funkcji w kodzie, która była na diagramie albo w drugą stronę, to się – co oczywiste – wywala (ale tylko w designerze, przez co w kodzie możemy sobie dalej spokojnie debugować)
  • I na koniec – jeszcze raz – jest strasznie wolne. Nie wymieniałem tego jeszcze, ale czasem po kliknięciu w cokolwiek (w menu, puste miejsce, w kod, itd) ma kilkusekundową zwięchę bez wyraźnego powodu). *Ot, czasem i twoje IDE musi poświęcić chwilę na rozmyślania nad losem aplikacji *:)

Zalety

  • Extension Manager i duży zestaw pluginów rozszerzających funkcjonalność środowiska. Oczywiście bezpłatna wersja środowiska, czyli Express jest pozbawiona tej funkcji (po doświadczeniach z VS 2008, w którym po zainstalowaniu kilku bezpłatnych wtyczek lub chociaż ReSharpera otrzymywało się wydajniejsze, lepsze i tańsze środowisko programistyczne niż 3 wersje Visual Studio wzwyż – Microsoft umie przynajmniej wyciągać trafne wnioski)
  • Integracja z Sharepoint. Innymi słowy w tym Visual Studio DA SIĘ programować w Sharepoint 2010. I to wszystko. Poza kilkoma nowymi templatkami projektów oraz automatycznemu dodawaniu referencji do plików Sharepointa, chyba nic nowego nie dodali. Ale tytuł ‘Integracja z Sharepoint Services’ brzmi całkiem chwytliwie, by nie rzec, naciągająco
  • Ładnie wygląda i dzięki dodatkowi Visual Studio Color Theme Editor można edytować kolorki w całym środowisku (poza kodem, który można edytować w starym i beznadziejnym panelu Fonts & Colors w ustawieniach)
  • Edytor kodu coraz bliżej funkcjonalności znanej z bezpłatnych lub open source’owych rozwiązań, takich jak Notepad++ lub NetBeans

Podsumowanie

Mam nadzieję, że po moim artykule wszystkim zapaleńcom Microsoftu oraz tym, którzy marzą o nowym środowisku programistycznym tylko ze względu na jego nowy design, przejdzie ochota na migrację i zostaną przy starym i dobrym Visual Studio 2005 lub 2008 albo zainteresują się open source’owymi rozwiązaniami (które nawiasem mówiąc może kiedyś poznajduję w sieci i opiszę). Innymi słowy nie dadzą się nabrać na kolejny marketingowy show w wykonaniu firmy Microsoft.

Powiązane artykuły

Artykuł o wtyczce do modyfikacji wyglądu VS

Artykuł o VS2010, w którym autor bardziej się skupia na obsłudze C++ w najnowszej wersji