In letzter Zeit bin ich großer Fan davon geworden, einzeilige if-Bedingungen mit einem logischen “Und” noch weiter zu verkürzen. Der einzige Nachteil bleibt, dass die Lesbarkeit des Quelltextes leidet (Weil viele Programmierer diese Methode der Vereinfachung nicht kennen und nutzen). Deshalb schreibe ich sie hier auf – Dann kann ich die Variante weiter ohne schlechtes Gewissen nutzen, weil jetzt einige Leute mehr darüber gelesen haben.
Hier die normale Programmierung, wobei die geschweiften Klammern auch weggelasssen werden können. Ich habe das Beispiel in php verfasst, genauso funktioniert es aber auch in vielen anderen Sprachen, wie zum Beispiel JavaScript.
<?php
$blubb = true;
if($blubb) {
die('Blubb!');
}
?>
Und die Kurzfassung
<?php
$blubb = true;
$blubb && die('Blubb!');
?>
Durch die Verknüpfung mit dem logischen “Und”, wird die Anweisung auf der rechten Seite nur ausgeführt, wenn die linke Seite wahr (true) ist.
Übrigens machen auch bekannte Bibliotheken wie jQuery massiven gebrauch von diesen Abkürzungen, da gerade in performancekritischen Projekten jedes Zeichen zählt.
Edit:
Klaus hat mich darauf hingewiesen, dass das ganze natürlich auch mit der “oder”-Verknüpfung funktioniert, mit der man genau den gegenteiligen Effekt erzielt:
<?php
$blubb = true;
$blubb || die('Blubb!');
?>
Wenn der erste Parameter wahr ist, wird die zweite Anweisung nicht mehr ausgeführt.
Siehste, ich wusste noch gar nicht, dass JS das auch kann. Ich misse in Java z.B. solche Konstrukte:
$blub ? alert('Hello World') : alert('Foobar');Dort kann ein logischer Ausdruck nicht alleine als Anweisung stehen.
Interessanterweise nimmt der Closure Compiler (http://closure-compiler.appspot.com/home) die Transformation sogar automatisch vor:
var $blub = $true; if ($blub) { alert('Hello World'); }wird zu
Über die Frage, welcher deiner beiden Beispiele schöner zu lesen ist, könnte man sich allerdings auch streiten – ich würde tendenziell die schlanke Variante bevorzugen