Wirbel um Visual Studio 2010: Neuerungen im Editor und Debugger

Werkzeuge  –  Kommentare

Trotz eines grafischen Designers sind und bleiben das Wichtigste in einer Entwicklungsumgebung der Editor und der Debugger. Mit Visual Studio 2010 bietet Microsoft einige nützliche Verbesserungen.

Die IntelliSense-Eingabeunterstützung ist seit Langem das wichtigste Produktivitätsfeature in Visual Studio. Eine zentrale Neuerung in Visual Studio 2010 bemerkt man bereits nach den ersten getippten Buchstaben: IntelliSense sucht nicht mehr wie bisher nur Wortanfänge, sondern führt eine Teilstringsuche aus. Gibt man "Consol.Col" ein, bietet die IDE nun die Attribute BackgroundColor und ForegroundColor sowie die Methode ResetColor an. Oder: Will der Entwickler einen Fehler auslösen und weiß, dass alle Fehlerklassen auf das Wort "Exception" enden, gibt es jetzt eine Liste aller erreichbaren Fehlerklassen. Bisher war Intellisense dabei nicht behilflich.

"Navigate To"-Fenster in Visual Studio 2010 kann der Anwender über einen Mausklick eine bestimmte Stelle anspringen (Abb. 1).

In früheren Versionen konnten Programmierer mit der Suchfunktion im Quellcode immer nur zur nächsten Fundstelle springen. Visual Studio 2010 besitzt nun ein zusätzliches Suchfenster (Navigate To), das alle Fundstellen zu einem Begriff anzeigt (siehe Abbildung 1). Mit einem Mausklick springt man die Fundstelle an.

Für die Übersichtlichkeit gibt es bei Visual Studio schon lange das Konzept der Coderegionen (engl. "regions"), die man "einklappen" kann. Bisher ging das für Namensräume, Klassen und Methoden sowie für Bereiche, die man mit "#Region...#End Region" markiert hat. Nun kann man mit der Tastenfolge Strg + m gefolgt von Strg + h eine beliebige Zeilenfolge einklappen. Aufheben lässt sich das wieder durch Strg +m[/code], gefolgt von [caps]Strg + p. Alternativ kann der Entwickler das Kontextmenü "Outlining" verwenden. Die Einklappungsinformation speichert Visual Studio in der .suo-Datei, die benutzerspezifische Konfigurationsinformationen enthält und die der Team Foundation Server im Standard nicht speichert. Daher gelten die Einklappungen nur für den einen Benutzer auf einem PC.

In Visual Studio 2010 lassen sich beliebige Befehlsfolgen einklappen (Abb. 2)

Testgetrieben entwickeln

Ein wichtiges Thema bei der Überarbeitung des Editors war Test Driven Development (TDD), mit dem der Entwickler Klassen und Klassenmitglieder aufruft, die er noch gar nicht deklariert hat. Schon bei Visual Studio 2005 ließen sich Aufrufe für nicht vorhandene Methoden eingeben, und die Entwicklungsumgebung konnte dann eine passende Methode generieren ("Generate Method Stub" im Kontextmenü). Jetzt kann man auch Klassen und Attribute auf diese Weise deklarieren.

Bei Klassen besteht die Wahl, eine "Standardklasse" (private Klasse im gleichen Projekt und Projektordner wie der aktuelle Standort) zu erzeugen oder über den Dialog "Generate New Type" eine individuellere Auswahl zu treffen (Abbildung 3). Bei Attributen hat man die Wahl zwischen einem Field oder einer Property, wobei Letztere als sogenannte Automatic Property, also ohne explizites Field erzeugt wird. Dieses in C# 3.0 eingeführte prägnante Sprachkonstrukt gibt es nun ab Version 2010 auch für Visual Basic.

Erzeugen einer neuen Klasse aus ihrer Verwendung heraus (Abb. 3)

Ebenfalls zum TDD gehört die Tastenkombination Strg + Alt + Leertaste. Damit versetzt man Visual Studio in einen Modus, in dem die Entwicklungsumgebung nach dem Drücken der Leertaste nicht mehr die Eingabe zu vervollständigen versucht, sondern in Hinblick darauf, dass es gewollt ein neuer Bezeichner sein könnte, der die angefangene Zeichenkette wie eingegeben stehen lässt.

Man sieht Visual Studio 2010 kaum an, dass es nun auf der Windows Presentation Foundation (WPF) basiert. WPF ermöglicht aber, dass man die Schriftgröße mit der Strg-Taste und dem Mausrad "nahtlos" vergrößern kann. Das ist vorteilhaft für Präsentationen oder, wenn ein Kollege mal über die Schulter auf den Code schauen soll.

Verweise

Eine Veränderung ist jedoch eindeutig eine Verschlimmbesserung. In den bisherigen Visual-Studio-Versionen war der "add Reference"-Dialog immer eine Produktivitätsbremse, denn sein Aufruf dauerte viele Sekunden. Nun lädt Microsoft die Inhalte der Registerkarte ".NET" asynchron. Statt eines Geduldsspiels ist die Auswahl aber ein Geschicklichkeitsspiel, denn der Dialog "verblättert" durch das asynchrone Laden die aktuelle Position immer wieder. Ein einfacher Suchdialog, wie der, der sich nun in der Auswahl der Projekt- und Projektelementvorlagen findet, wäre eine echte Hilfe gewesen. Aber Suchen kann man hier leider immer noch nicht.

Abbildung 4 zeigt zwei weitere neue Funktionen: Beim Markieren eines Bezeichners hebt Visual Studio alle weiteren Vorkommen des Bezeichners in der aktuellen Datei durch graue Hinterlegung hervor. Außerdem gibt es als Alternative zu der flachen Liste, die bisher "Find all References" produziert hat, nun eine hierarchische Ansicht ("View Call Hierarchy"), in der man sich durch den gesamten Aufrufbaum hangeln kann.

Code-Hervorhebung und Aufrufhierarchieansicht (Abb. 4)

Alternativ lässt sich mit der Funktion "Generate Sequence Diagramm" ein UML-Sequenzdiagramm (Dateityp [code].sequencediagram[Code]) anzeigen, dass die Funktionsweise einer Routine visualisiert (siehe Abbildung 5).

Generiertes Sequenzdiagramm in Visual Studio 2010 (Abb. 5)

Die Refactoring-Funktionen sind bei Visual Studio 2010 genauso schwach wie zuvor. Ebenso hat sich nichts daran geändert, dass sie für Visual Basic nicht zum Standardlieferumfang gehören. Zu erwarten ist aber, dass Microsoft wieder über einen Vertrag mit Developer Express einen Teil der Refactoring-Funktionen der Firma einkauft und kostenfrei an die Visual-Basic-Nutzer weitergibt. Es bleibt kurios, dass C# weiterhin bedeutend weniger von den "Snippets" genannten Codefragmenten besitzt als Visual Basic. In der Vergangenheit musste der Entwickler weitere Code-Snippets für C# einzeln herunterladen, und das gilt leider auch für die neue Version. Neu ist, dass es Code-Snippets für HTML, ASP.NET und JavaScript gibt. Die Liste der Snippets ist wie bisher erweiterbar.