Jörg Schumacher, Stöckse; André Minhorst, Duisburg
Bei der Entwicklung von Applikationen steht der Entwickler oft vor der Frage, wie Variablen, Konstanten, Objekte und so weiter heißen sollen. Vor allem dann, wenn Anwendungen im Team entstehen, ist die Standardisierung von Bezeichnungen wichtig. So entstehen Namenskonventionen, die festlegen, welche Klassen oder Kategorien von Objekten mit welchen Namenskürzeln identifiziert und gruppiert werden. Dies ist notwendig, damit andere Team-Mitarbeiter den geschaffenen Programmcode schneller verstehen, erleichtert aber ebenso die Wartung von Anwendungen in Zukunft durch die Entwickler selbst oder Drittpersonen. Dieser Artikel vermittelt Informationen über eine in der Programmierung weit verbreitete Konvention – die ungarische Notation.
Der Bezeichner von Variablen, Konstanten oder anderen Objekten sollte möglichst aussagekräftig sein, damit ein Programmierer auch nach längerer Zeit noch die Bedeutung der Objekte in einem Programm erkennen kann. Oft wird versucht, den Verwendungszweck der Variablen in ihren Namen auszudrücken. Bei geschickter Namensvergabe lassen sich jedoch noch weitere Informationen in die Variablenbezeichnung aufnehmen.
Der Ursprung der dafür am meisten verbreiteten Namenskonvention liegt in den 70er Jahren und geht auf Charles Simony zurück. Charles Simony, einer der berühmten Programmierer von Microsoft, war maßgeblich an der Entwicklung von Microsoft Word und Microsoft Multiplan beteiligt. Er entwickelte eine Namenskonvention, die von ihm als “ungarische Namenskonvention” bezeichnet wurde. Der Begriff, so Charles Simony in einem Interview, hat eine doppelte Bedeutung.
Zum einen rührt er aus der Tatsache her, dass Charles Simony in Ungarn geboren wurde und er diese Konvention selber entwickelt hat. Zum anderen ist es eine Replik auf die Redensart “das sind für mich böhmische Dörfer”, die ursprünglich meint, dass man etwas nicht versteht. Populär wurde dieser Ausdruck im Dreißigjährigen Krieg. Soldaten, die in Böhmen kämpften, verstanden die tschechischen Namen der dortigen Dörfer nicht. Im Gegensatz dazu soll also der Begriff “ungarische Notation” signalisieren, dass selbst komplizierte Namen verständlich bleiben.
Die Grundidee der ungarischen Namenskonvention war die Aufnahme des benutzten Datentyps in den Namen einer Variablen. Zu diesem Zweck wird dem eigentlichen Namen eine Folge von Kleinbuchstaben vorangestellt (Präfix), die den Typ der Variablen beschreiben. Einige Beispiele zur Variablendeklaration in Visual Basic sollen das verdeutlichen (s. Tab. 1).
In Visual Basic werden dem Variablennamen in der Regel drei Buchstaben vorangestellt. Dabei handelt es sich optimalerweise um die ersten drei Buchstaben der Bezeichnung des jeweiligen Variablentyps.
Welche Präfixe verwendet werden, hängt davon ab, welche Elemente die Programmiersprache bietet. Das ist zwar je nach Programmiersprache unterschiedlich, prinzipiell hat sich aber die Art der Benennung durchgesetzt und findet auch in VBA Anwendung, also zum Beispiel in der Access-Programmierung.
Präfix |
Variablentyp |
Beispiel |
int |
Integer |
intAnzahl |
str |
String |
strVorname |
cur |
Currency |
curEinnahmen |
tbl |
Table |
tblAdressen |
rep |
Report |
repAdressenliste |
cmd |
Commandbar |
cmdOK |
Tab. 1: Variablenpräfixe nach ungarischer Notation
Auch wenn die Verwendung der ungarischen Namenskonvention auf den ersten Blick ein wenig merkwürdig erscheint, hilft sie doch sehr, ein umfangreiches Programm verständlicher zu machen.
Obwohl das Prinzip recht simpel ist, leistet es schon während der Programmierung gute Dienste und hilft unter Umständen, Fehlern vorzubeugen. Wie das funktioniert, zeigt folgendes Beispiel.
Angenommen, dass in einem Programm zwei Variablen definiert werden, eine vom Datentyp Integer und eine vom Datentyp Single.
Hinweis
Der Datentyp Integer hat zwei Bytes Speicherbedarf und kann ganzzahlige Werte von -32768 bis 32767 darstellen. Der Datentyp Single hat vier Bytes Speicherbedarf und kann nicht nur ganzzahlige, sondern auch Gleitkommazahlen speichern. Weitere Informationen zum Thema Datentypen finden Sie in der Onlinehilfe von Access unter dem Stichwort Datentypen (Zusammenfassung).
Später im Programm findet eine Zuweisung statt. In den folgenden Zeilen werden die beiden Variablen deklariert. Der Variablen Zahl1 wird der Wert 1,34 zugewiesen. Anschließend wird der Inhalt von Zahl1 der Variablen Zahl2 zugewiesen. Das anschließend aufgerufene Meldungsfenster gibt schließlich den Wert der Variablen Zahl2 aus. Und hier folgt die böse überraschung: Die Variable enthält nicht die Zahl 1,34 als Wert, sondern die 1.
Dim Zahl1 As Single Dim Zahl2 As Integer Zahl1 = 1.34 Zahl2 = Zahl1 MsgBox "Zahl2 = " & Zahl2
Dieses Beispiel zeigt einen Fehler, der bei Zuweisungen häufig auftritt: Die Wertebereiche der Variablen sind nicht identisch. So lange der Wert von Zahl1 den Wertebereich von Zahl2 nicht überschreitet und keine Nachkommastellen vorkommen, ist die Zuweisung unproblematisch.
Ein weiterer Fehler, der aus dieser Konstellation entstehen kann, ist folgender: Beträgt der Wert von Zahl1 zum Beispiel 100.000 und liegt damit außerhalb des möglichen Wertebereiches der Variablen Zahl2, führt diese Zuweisung zu einem Programmfehler.
Im Vergleich zum oben beschriebenen Fehler wird dieser Fehler immerhin von der Anwendung angezeigt, sodass die Berechnung nicht unbemerkt mit falschen Werten fortgesetzt wird.
Bei Verwendung der ungarischen Namenskonvention fällt dem Programmierer das Problem dagegen sofort ins Auge:
Dim sngZahl1 As Single Dim intZahl2 As Integer sngZahl1 = 1.34 intZahl2 = sngZahl1 MsgBox "Zahl2 = " & sngZahl2
In diesem Beispiel wird schon beim Schreiben der Programmzeile deutlich, dass hier ein Fehler bei der Zuweisung auftreten kann, auch wenn die Definitionen der Variablen und damit die Festlegung der Datentypen weit entfernt von der Zuweisung im Programmtext stehen könnten.
Standards und Konventionen werden oft als einschränkend empfunden. Es ist mitunter eher lästig, sich an die Vorgaben zur Bezeichnung der verwendeten Elemente zu halten. Aber Konventionen haben unbestreitbare Vorteile:
über Konventionen beim Programmieren lässt sich trefflich streiten. Jeder Programmierer entwickelt mit der Zeit eigene Konventionen. Eine änderung dieser Gewohnheiten ist eher lästig. Oft wird über Konventionen sogar gestritten als ginge es um Religion.
Dabei ist es letztlich beim Programmieren egal, welche Konventionen zugrunde liegen. Alles wird einfacher, je mehr sich die Entwickler an relativ einheitliche Regeln halten. Und die ungarische Notation hat sich über die Jahre als Quasi-Standard herausgebildet, nicht zuletzt natürlich auch durch die Verwendung der Prinzipien in den Programmiersprachen von Microsoft.
Ungarische Namen bestehen aus drei Teilen: Basistyp, Präfix und Bezeichner. Diese drei Teile müssen aber nicht immer alle vorhanden sein. Meist bestehen ungarische Namen nur aus dem Präfix und dem Bezeichner.
Präfix und Basistyp sind zusammen der kleingeschriebene Teil, mit dem jeder Variablenname beginnt. Es gibt auch nicht für alle Fälle standardisierte Bezeichner, sodass entweder die Phantasie des Entwicklers beim Erstellen eigener Programme oder beim Lesen von Fremdprogrammen gefordert ist.
Basistypen bezeichnen den Datentyp der Variablen. Dabei werden sowohl die Standardtypen als auch abstrakte Datentypen durch Kürzel repräsentiert. So steht üblicherweise der Buchstabe obj als Basistyp für Objekte, ohne diese weiter zu kennzeichnen. Im Allgemeinen wird ein Basistyp nur dann verwendet, wenn eine detailliertere Bezeichnung nicht möglich oder notwendig ist.