Galileo Computing < openbook >
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.


Java ist auch eine Insel von Christian Ullenboom
Buch: Java ist auch eine Insel (Galileo Computing)
gp Kapitel 26 Style-Guide
gp 26.1 Programmierrichtlinien
gp 26.2 Allgemeine Richtlinien
gp 26.3 Quellcode kommentieren
gp 26.3.1 Kommentartypen
gp 26.3.2 Strategischer und taktischer Kommentar
gp 26.3.3 Bemerkungen über JavaDoc
gp 26.3.4 Gotcha-Schlüsselwörter
gp 26.4 Bezeichnernamen
gp 26.4.1 Ungarische Notation
gp 26.4.2 Vorschlag für die Namensgebung
gp 26.5 Formatierung
gp 26.5.1 Einrücken von Programmcode - die Vergangenheit
gp 26.5.2 Verbundene Ausdrücke
gp 26.5.3 Kontrollierter Datenfluss
gp 26.5.4 Funktionen
gp 26.6 Ausdrücke
gp 26.7 Anweisungen
gp 26.7.1 Schleifen
gp 26.7.2 Switch, case und Durchfallen
gp 26.8 Reihenfolge der Eigenschaften in Klassen
gp 26.9 Zugriffsrechte und Zugriffsmethoden
gp 26.9.1 Accessors/Zugriffsmethoden
gp 26.10 Verweise


Galileo Computing

26.6 Ausdrücketoptop

Ausdrücke begegnen uns in Programmen unentwegt. Da sie so eine große Bedeutung haben, ist auf gute Lesbarkeit und Strukturierung zu achten. Einige Punkte fallen besonders ins Gewicht:

gp Shift-Operatoren als Ersatz für arithmetische Operationen sind zu vermeiden. Für einen Compiler oder eine optimierende Laufzeitumgebung ist es gleich, ob er eine Zahl um zwei Stellen nach links shiftet oder mit vier multipliziert - der generierte Code sollte optimiert derselbe sein.
gp Um die Reihenfolge der Operationen in komplexen Ausdrücken zu enthüllen, sind Klammern zu setzen. Bezüglich der Auswertungsreihenfolge gibt es in Java einige Fallen. Die Abfrage, ob zwei Werte kleiner als eine Zahl sind, ist mit dem Ausdruck a&b < 10 falsch gelöst; die Interpretation ist a&(b<10), also ist diese Anweisung doppelt falsch, außer, wenn a ein boolean ist. Ungeschickt eingestreute Leerzeichen können hier ganz schnell falsche Ausführungsreihenfolgen suggerieren, deshalb ist besondere Vorsicht geboten.
gp Glücklicherweise unterstützt die Syntax von Java es nicht, Wahrheitsausdrücke aus Vergleichen mit in einen Ausdruck einzubringen, der nicht den Typ boolean hat. In C ist es kein Problem, beispielsweise durch a=27*(b<10) einer Zahl a genau dann den Wert 27 zuzuweisen, wenn b kleiner 10 ist. (Ist b<10 wahr, dann ist dieser Ausdruck wahr und somit ist a=1*27=27. Ist b aber größer oder gleich 10, dann ergibt der Vergleich b<10 eine 0 und a=0*27=0.) In diesem Fall brauchen wir noch nicht einmal auf eine if-Verzweigung zurückzugreifen, denn mit dem trinären Operator geht es auch: a = (b < 10) ? 27 : 0.

Auch wenn wir meinen, dass

a = (b = c + d) + e;

eine Vereinfachung im Vergleich zu

b = c + d;
a = b + e;

ist, sollten wir mit einer Zuweisung pro Zeile auskommen.

Zahlenliterale, also unbenannte Konstanten, sollten wir in Ausdrücken vermeiden. Da sie die Werte später ändern können (wie die Mehrwertsteuer), fehlt die Übersicht, wo der Quellcode überall geändert werden muss und wo der zufällig gleiche Wert die gleiche Bedeutung hat. Daher führt ein guter Programmierer Konstanten ein. Sie werden in Java mit final deklariert. Von Konstanten mit besonderer Bedeutung, so genannten »Magic Numbers«, ist abzuraten. Wenn der Wert einer solchen magischen Variable später geändert wird, zaubert das Programm auf einmal etwas ganz anderes daraus, da sich die Änderung an vielen Programmstellen auswirkt. Wir sollten Konstanten definieren für numerische Werte (zum Beispiel PI, Umrechnungsfaktoren) oder Werte von Aufzählungstypen.





Copyright (c) Galileo Press GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de