Prof. Dr. Pape - Java Programmierrichtlinien - Ausdrücke |
Deutsch | ||||||||||||||
Quelltextformatierung - AusdrückeZurück zur ÜbersichtLeerzeichen bei Operatoren
Beispiela = 1 + 7 * (5 / a); flaecheninhalt = kreisradius * kreisradius * 3.14159265; BegründungOperatoren sind wichtig, um zusammengehörige Teilausdrücke zu identifizieren und zu verstehen. Da sie im Gegensatz zu Bezeichnern oder Zahlen sehr kurz sind „verschwinden“ sie für menschlichen Leser sehr schnell. Durch Hinzufügen der Leerzeichen werden die Operatoren wieder hervorgehoben. Umbrechen von überlangen Ausdrücken
Beispiel| <-- soll das "Zeilenende" markieren a * a * a + 3 * a * a * b + 3 * a * b * b + b * b *b Nicht bei *, sondern bei + umbrechen (+ bindet schwächer als *)
a * a * a + 3 * a * a * b
+ 3 * a * b * b + b * b *b
|
x1 * 3 + (a + b + 6) * ((x2 + 8) + x3 / 11)
Bei + umbrechen im zweiten Faktor, wäre schlecht, da durch Einrücken, dann x3 / 11 über die Grenze hinausragt. Deswegen besser bei * umbrechen.
x1 * 3 + (a + b + 6)
* ((x2 + 8) + x3 / 11)
public Address(String strasse,
String hausnummer,
int postleitzahl,
String ortsname) {
...
}
BegründungDamit die Operatoren bei komplexeren Ausdrücken mit längeren Bezeichner oder Zahlen nicht so leicht überlesen werden und die Struktur eines Ausdrucks besser erkennbar ist. Vergleich mit Booleschen Werten
BeispielAnstatt folgenden Booleschen Ausdruck schaltjahr == true && volljaehrig == false verwende besser schaltjahr && ! volljaehrig BegründungBei Verwendung der Getter-Methoden mit vorangestellten is und Aussprache von ! als „nicht“ oder „not“, werden Boolesche Ausdrücke so kürzer und verständlicher. isSchaltjahr() && ! isVolljaehrig() Liest sich als "ist ein Schaltjahr und nicht volljähhrig" Operatorenreihenfolge
Beispiel
if (0 < i && i < j && j < n) {
}
Oder für i = j = 7 < n
if (i == j && j == 7 && 7 < n) {
}
BegründungDer resultierende Ausdruck ist dann sehr nah an der mathematischen Schreibweise orientiert und leichter verständlich, da er die ursprüngliche zu implementierende Form beibehält. Vermeide Seiteneffekte
BeispielWelchen Wert hat int a = 1; a = (a = 2) + (a += a) * (a = 1 + a); BegründungAusdrücke werden in Programmen zur Abfrage von Werten und Zuständen verwendet. Wie bei mathematischen Ausdrücken, erwartet ein Mensch beim Lesen von Java-Ausdrücken normalerweise nicht, dass diese auch Zustände ändern könnten. Tun sie dies doch, dann sind derartige Ausdrücke oft für einen Menschen sehr schlecht zu verstehen. Das liegt unter anderem daran, das durch den Vorrang von Operatoren und Klammerungen, die Teilausdrücke nicht sequentiell von links nach rechts ausgewertet werden: gleichzeit die Zustandsänderungen und die Ablaufreihenfolge zu erfassen, ist für einen Menschen sehr schwierig.
Wenn in Booleschen Ausdrücken die "Kurzschluss"-Operatoren Funktionen werden normalerweise in Ausdrücken verwendet. Deswegen sollte aus oben genannten Gründen eine Funktion Seiteneffekt-frei sein. In Fällen, in denen das nicht möglich ist, müssen die Seiteneffekte immer unmissverständlich dokumentiert werden. Dazu kommt, dass die Zustandsänderung bei Verwendung von Funktionen im Ausdruck im Ausdruck selbst nicht gesehen werden kann. Vermische Kurzschlußoperatoren nie mit "normalen" Booleschen Operatoren
BeispielWelchen Wert hat folgender Ausdruck? false && true | true Überlegen Sie sich den Wert. Anschließend überprüfen Sie den Ausdrück mit Java. Begründung&& bindet schwächer als |. Deswegen ist der Wert des Ausdrucks |
|||||||||||||||
|   |   |   |