woensdag 3 juli 2013

Visual Studio 2013

Ruim tien jaar geleden maakte ik voor het eerst kennis met .NET. Het was de allereerste versie: .NET 1.0, voor een nieuw op te zetten CRM-applicatie. Aanvankelijk wilde ik Java hiervoor inzetten omdat .NET zo nieuw was en zichzelf nog moest bewijzen. De eigenaar van het bedrijf vond .NET marketingtechnisch "beter bekken". Met een verantwoordelijkheid minder ben ik toen aan de slag gegaan met .NET 1.0 en de daarbij behorende Visual Studio 2002. Voor die tijd behoorlijk gelikt, maar vergeleken met de hedendaagse versies wel erg "clunky". Na Visual Studio 2002 kwam Visual Studio 2003, gevolgd door Visual Studio 2005, 2008, 2010 en Visual Studio 2012 (afbeelding 1).


Afbeelding 1. Good old Visual Studio 2012.
Visual Studio 2012 oogt nogal saai. Weinig kleur en lastig te zien waar het scherm nu begint of eindigt, maar werkt verder prima. Kennelijk jeukten de handen van het Visual Studio team, want inmiddels is de eerste preview van Visual Studio 2013 al weer gelanceerd. Reden om eens een kijkje te nemen.

Het eerste dat opvalt, is dat de kleuren weer terug zijn. Sterker nog, je kunt kiezen uit drie verschillende thema's: Blue, Light en Dark. Wanneer je Light kiest, krijg je zo'n beetje de look en feel zoals bij Visual Studio 2012. Alles lijkt één geheel te vormen. Met het thema Blue zijn de menu's en titel bars duidelijk onderscheidbaar (afbeelding 3) en voor de nachtbrakers hebben ze een Dark thema toegevoegd (afbeelding 2)


Afbeelding 2. Visual Studio in de nachtstand (thema: Dark).
Kleurtjes en thema's zijn allemaal mooi en aardig, maar er moet ook mee gewerkt worden. In dat opzicht zitten er een aantal interessante toevoegingen in Visual Studio 2013. In afbeelding 3 zie je een paar leuke functionaliteiten. Boven definities (class, method, property etc) kun je nu zien welke code de betreffende definitie gebruikt. Het beperkt zich vooralsnog tot verwijzingen binnen dezelfde assembly, maar wel handig als je aan de grote voorjaarschoonmaak in de code begint. Als voor de betreffende definitie ook nog eens een unit test aanwezig is, zie je dat ook meteen terug inclusief het resultaat van de unit test.
Persoonlijk ben ik bijzonder gecharmeerd van de vernieuwde scrollbar. In plaats van een saaie grijze balk wordt nu de gehele code in de scrollbar geprojecteerd. Middels een soort van vergrootglas (scrollbar preview) kun je stukken code elders in het bestand bekijken zonder de code verschuiven.


Afbeelding 3. Een aantal nieuwe functionaliteiten in de editor.
In Visual Studio heb je al lange tijd de "Go to definition" optie waarmee je snel naar andere definities kunt springen. Nadeel is wel dat je uit je werkvenster bent. In Visual Studio 2013 zit nu een heuse gluurfunctie (Peek definition) waarmee je de definitie in jouw werkvenster te zien krijgt (afbeelding 4). Vanuit dit gluurvenster kun je weer verder gluren waarbij de navigatiegeschiedenis netjes wordt bijgehouden.


Afbeelding 4. Peek Definition. Een zeer handige functionaliteit.
Uiteraard zijn er nog veel meer handige toevoegingen, maar daarvoor verwijs ik naar de presentatie van Cathy Sullivan.


Naast Visual Studio 2013 is ook een nieuwe versie van het .NET framework uitgebracht. .NET 4.5.1 is een in-place update. Dat houdt in dat de installatie van .NET 4.5.1 de oude versie 4.5 overschrijft. Een gedurfde onderneming met de in-place update van versie 4.5 nog zo vers in het geheugen. Zo'n minimale versieverhoging doet weinig spectaculairs vermoeden. De meeste verbeteringen zitten dan ook in de debugger. Vanaf Visual Studio 2005 was het al mogelijk om tijdens debuggen code aan te passen (Edit and Continue). Dit gold echter alleen voor 32-bits applicaties. Acht jaar later, na lang aandringen door de gemeenschap, kan dit nu ook met 64-bits applicaties.
Wat ik persoonlijk erg handig vind, is het bekijken van de resultaten van geneste aanroepen. Bekijk het volgende stukje code eens

int result = SomeCalc(4 * OtherCalc(24 + YetAnotherCalc(3)));
Als we de uitkomsten van OtherCalc en YetAnotherCalc wilden inspecteren, waren we eigenlijk veroordeeld tot de volgende herschrijfactie.

int res1 = YetAnotherCalc(3);
int res2 = OtherCalc(res1);
result = SomeCalc(res2);

res1 en res2 konden vervolgens geïnspecteerd worden. Met .NET 4.5.1 hoeft dit gelukkig niet meer. Nu kunnen we de tussentijdse resultaten, gedecoreerd met sierlijke pijltjes, in het "autos" windows bekijken (afbeelding 5).


Afbeelding 5. De tussentijdse resultaten van methodes in een geneste aanroep
Een andere beduidende verbetering vind ik de ADO.NET connection resiliency. Dat klinkt ingewikkeld genoeg om nader te bekijken. Wanneer je een verbinding maakt met een database, die op een andere machine draait, ben je afhankelijk van de verbinding tussen de machines. Wanneer die verbinding verbroken wordt, resulteert dat in een fraaie exceptie (die meestal niet verwacht is waardoor de eindgebruiker ermee opzadeld wordt). Om dit af te vangen, moest je vaak lastige retry strategieën implementeren. Op LAN-netwerken kwam zo'n netwerkonderbreking niet zo vaak voor, maar met de groeiende populariteit van Windows Azure Sql Database wordt dit probleem realistischer dan ooit. In .NET 4.5.1 is dit nu opgelost met ADO.NET connection resiliency. Wanneer een verbinding verbroken is, kan ADO.NET de verbinding zelf weer herstellen.

Tot zover een aantal verbeteringen die mij het meest aanspreken. Meer verbeteringen zijn te bewonderen in de presentatie van Habib Heydarian op Channel 9

Geen opmerkingen:

Een reactie posten