Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 5/2003.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Effektiver programmieren mit der
ungarischen Notation

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.

Historisches

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.

Der Sinn von Konventionen

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:

  • Konventionen machen die Benennung einfacher: Wenn ein bestimmtes Muster für die Erstellung von Namen einmal festgelegt ist, kann nach einiger Übung nahezu blind danach verfahren werden.
  • Konventionen erleichtern das Verständnis. Wenn ähnliche Namen für ähnliche Zusammenhänge stehen, muss sich der Entwickler auf weniger Details konzentrieren.
  • Es ist viel einfacher, fremde Quelltexte zu analysieren.
  • Ü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.

    Handhabung

    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.

    Die Abkürzung der Basistypen ist nicht immer eindeutig. Das liegt zum Beispiel bei den Standardvariablentypen daran, dass der Typ (beispielsweise numerisch) selbst äußerst wenig über den Verwendungszweck der Variablen aussagt. Bei den abstrakten Datentypen wie beispielsweise wnd für Fenster ist der Verwendungszweck meistens klar. Es ist aber problematisch, eine geeignete Abkürzung zu finden. In der Praxis kommt es selten vor, dass zwei gleiche Abkürzungen im selben Abschnitt des Codes verwendet werden. In diesem Fall spielt dann der Bezeichner selbst eine größere Rolle als sonst.

    Präfixe gehen über den Basistyp hinaus und beschreiben den Zweck einer Variablen. Im Gegensatz zu den Basistypen sind Präfixe eindeutig - was in der Programmierpraxis auch nicht immer gewährleistet ist. Die Präfixe sind das Charakteristikum der ungarischen Notation. Sie beschreiben die Bedeutung einer Variablen im Programmkontext. Präfixe erscheinen im Namen vor dem Basistyp.

    Sie können beliebig mit weiteren Präfixen oder Basistypen kombiniert werden. Häufig verwendet wird beispielsweise der Buchstabe h für Handle: Objekte des Betriebssystems werden häufig durch Handles repräsentiert. In der Kombination mit dem Basistyp Fenster entsteht so hwnd als Vorspann für den Bezeichner des Handles eines Fensters.

    Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

    Sind Sie Abonnent?Jetzt einloggen ...
     

    Kompletten Artikel lesen?

    Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

    E-Mail:

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.