Refactoring: Code optimieren - Teil 2

Verzeichnis der aktuellen Access-Anwendung ermitteln

Beispiel: Sie verwenden den folgenden Ausdruck an verschiedenen Stellen in der Anwendung, um das Verzeichnis der aktuellen Access- Anwendung zu ermitteln (in einer Zeile):

strAnwendungspfad = Left(CurrentDb.Name,
Len(CurrentDb.Name)-Len(Dir(CurrentDb.Name)))

Dann sollten Sie etwa folgende Funktion in einem Standardmodul erstellen, das öffentliche Funktionen beherbergt:

Public Function Anwendungspfad() As String
Anwendungspfad = Left(CurrentDb.Name,
Len(CurrentDb.Name) - Len(Dir(CurrentDb.Name)))
End Function

Den zuvor für das Ermitteln des Anwendungsverzeichnisses verwendeten Ausdruck ersetzen Sie wie folgt:

strAnwendungspfad = Anwendungspfad

Natürlich sollten Sie alle Stellen, an denen dieser Aufruf verwendet wird, vor und nach dem Refactoring testen.

Etwas komplizierter wird es, wenn die Routine lokale Variable verwendet. Diese müssen Siedann natürlich als Parameter übergeben. Angenommen, Sie möchten die Berechnung in folgendem Code in eine neue Routine extrahieren. Der Kommentar deutet bereits darauf hin, dass man den Sinn der Berechnung nicht auf einen Blick erfassen kann:

Dim intWert1 As Integer
Dim intWert2 As Integer
Dim sngErgebnis As Single
'...
'Komplizierte Berechnung
sngErgebnis = (intWert1 - intWert2) / (intWert1 +
intWert2) * 100
'...

Dann sieht die neue Funktion so aus:

Public Function KomplizierteBerechnung(intWert1 As
Integer, intWert2 As Integer) As Single
KomplizierteBerechnung = (intWert1 - intWert2) /
intWert2 * 100
End Function

Der neue Aufruf übergibt die beiden Parameter an die Funktion:

sngErgebnis = KomplizierteBerechnung(intWert1,
intWert2)

Auch hier erkennen Sie einen der weiter oben erwähnten „Code-Gerüche“ wieder: Der Sinn der Berechnung ist nur durch eine entsprechende Kommentarzeile ersichtlich. Dementsprechend kann der Name der neuen Funktion leicht aus der Kommentarzeile abgeleitet werden. „Komplizierte Berechnung“ steht dabei stellvertretend für alle Funktionen, deren Zweck sich nicht auf den ersten Blick erschließt.