Refactoring: Code optimieren - Teil 1

Das Auge programmiert mit

Wenn man bei Code von Struktur spricht, betrifft das nicht nur den Inhalt, sondern auch das Aussehen des Codes. Wenn Sie einen Entwickler ärgern wollen, der mit Ihrem Code arbeiten soll, lassen Sie einfach sämtliche Leerzeilen weg und verzichten entweder ganz auf Einrückungen oder setzen sie völlig willkürlich. Wenn Sie dann auch noch mehrere Anweisungen durch Doppelpunkte getrennt in eine einzige Zeile schreiben, dürfte Ihnen das vermutlich gelungen sein.

Im Ernst: Die Lesbarkeit von Code lässt sich mit wenigen Leerzeilen und Einrückungen drastisch verbessern – umso mehr, wenn Sie für die Einrückungen ein verbreitetes Maß als Tabulator-Schrittweite verwenden. Einstellen lassen sich solche Details übrigens im Optionen-Dialog des VBA-Editors, den Sie über den Menübefehl Extras/Optionen anzeigen (Bild 1).

Bild 1: Einstellungen des VBA-Editors.
Bild 1: Einstellungen des VBA-Editors.

In diesem Dialog befinden sich noch weitere für die Codequalität interessante Optionen: So sollten Sie beispielsweise die Option Variablendeklaration erforderlich aktivieren, damit jedes neue Modul automatisch mit der Zeile Option Explicit versehen wird. Auf diese Weise kommen Sie nicht in die Verlegenheit, mit einer Variablen zu arbeiten, die Sie zuvor nicht deklariert haben.
Auch die Option Automatisch Einzug vergrößern ist durchaus sinnvoll. Sie bewirkt, dass die Einfügemarke nach einem Zeilenumbruch von einer per Tab-Taste eingerückten Zeile automatisch wie die vorherige Zeile eingerückt wird. Die gängigen Regeln für das Einrücken von Zeilen sind schnell aufgezählt:

  • Die Routinendeklaration (also die Kopfzeile) und die End-Zeile werden nicht eingerückt.

  • Sprungmarken wie Prozedurname_Exit: oder Prozedurname_Err: kann man gar nicht einrücken, da bei allen Zeilen, die mit einem Doppelpunkt enden, automatisch jeglicher Einzug entsorgt wird.

  • Der komplette restliche Inhalt der Routine wird grundsätzlich um einen Tabulatorschritt eingerückt. Eine gelegentlich beobachtete Variante ist, auch die Zeilen zur Deklaration von Variablen nicht einzurücken.

  • Alle Zeilen, die Strukturen wie einer If-Then-Bedingung, einer Do-While-Schleife oder anderen untergeordnet sind, werden gegenüber der jeweiligen Struktur um einen Tabulatorschritt eingerückt.

  • Die Fortsetzung umbrochener Zeilen wird ebenfalls eingerückt.

Leerzeilen können ab einer gewissen Anzahl Zeilen ebenfalls wichtig für die Lesbarkeit des Codes sein. Es hat allerdings keinen Sinn, zwischen jede Codezeile eine Leerzeile einzufügen. Leerzeilen sollten vielmehr zwischen den einzelnen Bereichen einer Routine eingefügt werden, zum Beispiel zwischen den Deklarationsteil und dem Rest der Routine.