NT Innovation Company GmbH


Drucken Mailen Messenger Facebook Twitter

Schnellstart

NT Innovation Company GmbH > NT Innovation Company GmbH > Beiträge > Vorbereitung zum Re-Design von Code in Microsoft Visual Studio 2012 Ultimate
Juli 05
Vorbereitung zum Re-Design von Code in Microsoft Visual Studio 2012 Ultimate

1. ​Code-Analyse mit Hilfe von Visual Studio

 

Eine Übsersicht über die verwendeten Methoden und Klassen findet man in Visual Studio unter „Analyze -> Calculate Code Metrics for Solution“.
 
Maintainabilty Index“ veranschaulicht, wie leicht ein Code sich warten lässt - je höher, desto besser. Unter einem Wert von 20 erhöht sich der Wartungsaufwand stark. Alles unter 10 ist extrem aufwändig.
 
Cyclomatic Complexity“ zeigt die Komplexität zu Entscheidungsfindungen (IF/Case/etc). Hier sollte ein Wert unter 10 angestrebt werden. Unter Inkaufnahme von höherem Aufwand kann der Wert auch höher angesetzt werden.

Lines of Code“ errechnet die Anzahl der Codezeilen. Es gilt, je weniger Codezeilen, desto übersichtlicher der Code, desto einfacher zu warten. Ein gutes Ziel ist es, dass eine Methode nicht mehr Zeilen hat als auf dem Bildschirm darstellbar (ca. 10 - 20). Für Klassen sollte eine maximale Zeilenzahl von 200 angestrebt werden.
 
 
2. Code-Analyse nach logischen Gesichtspunkten
 
Wichtig im Code ist, dass Funktionen in den richtigen Klassen implementiert sind.
So sollten Methoden, die das Verhalten von Objekten beschreiben, im Objekt selbst oder in einer Extra-Klasse implementiert sein. Diese zusätzliche Klasse kann dann im Objekt eingebunden werden.
 
Das heißt, man sollte den Code auslagern, der das Verhalten des Objektes, z.B. bei Drag’n’Drop, beschreibt, aber in einer Klasse steht, die eine Gruppe von Objekten verwaltet.
 
Also bei jeder Methode fragen: Ist die Methode richtig platziert?
 
Hilfs- und Berechnungsmethoden, können in statische Klassen ausgelagert werden.

 


3. Code-Analyse zum Casten
 
Bei dem expliziten Casten von einem Typ zu einem anderen kann es immer zu Exceptions kommen, wenn es fehlschlägt.
So kann man statt “var x =  (myClass)object” mit “var x = object as myClass” casten. Hier kommt es zu keiner Exception, stattdessen wird x auf null gesetzt.
 
Jetzt kann man die Fälle behandeln. Darf es nicht dazu kommen, dass x gleich null ist, so kann man eine eigene Exception werfen. 
 
if(x==null)
throw InvalidCastException(“object muss myClass sein”);
 
Oder man kann mit einer If-Selektion die beiden Fälle unterschiedlich behandeln.
 
if(x==null)
{ }
else
{ }

 

4. Code-Analyse für Parameterübergabe
 
Wenn Parameter an Methoden übergeben werden, so werden diese nicht in jedem Fall vollständig gebraucht.
Braucht es nur einen Teil eines Parameters , so sollte man auch nur diesen Teil übergeben, z.B. nur die Property eines Objektes, anstatt das gesamte Objekt.
Übernimmt eine Methode Parameter eines bestimmten Types und casted diesen zum verarbeiten, so sollte man den Cast vor dem Aufruf ausführen. Im besten Fall wird ein Cast, der schon vor der Methode steht, überflüssig. Möglich ist auch, dass man die Methode überlädt und dort das Casten übernimmt.
Außerdem sollte man überprüfen, ob ein Parameter überhaupt in der Methode Verwendung findet und gegebenenfalls entfernen.

 

 

5. Code-Analyse für Referenztests

Wenn auf „Properties“ und Methoden von Objekten zugegriffen werden soll, obwohl das Objekt null ist, so wird eine NullReferenceException geworfen.
So sollte man am Anfang einer Methode alle Objekte auf null prüfen, die in der Methode genutzt werden. Wird ein null erwartet, so kann dies entsprechend behandelt werden (z.B. mit einem return). Darf es dagegen nicht null sein, so wirft man eine Exception:

if(args==null)
                               throw new ArgumentNullException(„args“);

Wird die Referenz nur an eine andere Methode weitergegeben, so muss man die Referenz nicht prüfen. Dies wird, falls nötig, in der Methode selbst übernommen.
Da es sich bei Objekten um Referenztypen handelt, können diese in Methoden auf null gesetzt werden. Wird auf Bereiche des Objektes, nach Übergabe an eine Methode, zugeriffen, so muss das Objekt vorher geprüft werden. 

 

6. Festhalten von Code Re-Design Aufgaben
 
Wenn der Code sofort bei Review umgeschrieben wird, so kann es zu Problemen mit Abhängigkeiten kommen. 
Deswegen sollte man an den Stellen wo ein Re-Design notwendig ist, einen Kommentar einfügen. Hierfür eignen sich die „//TODO: was zu tun ist“-Kommentare, die in der Tasks Liste in Visual Studio unter Comments angezeigt werden.
Nun können die verantwortlichen Programmier auf mögliche Probleme mit Abhängigkeiten reagieren und bessere Lösungsvorschläge einfügen.

 

Download als PDF

Kommentare

Zu diesem Beitrag sind keine Kommentare vorhanden.