Hallo,
Doppelt negieren und richtig klammern:
if ( !($display = !login()) )
Code wird in der Regel nur einmal geschrieben, aber danach sehr häufig von Programmierern gelesen.
während der "Evolution" des Codes wird er in der Regel häufig umgeschrieben, wenn er einmal ein gewisses Reifestadium erreicht hat, stimme ich dir zu.
Ich halte absolut nichts davon, eine hohe Kreativität beim Herstellen des Codes zu beweisen, wenn er dadurch unoffensichtlicher und unleserlicher wird.
Ich auch nicht - wohl aber dann, wenn er kompakter wird, ohne an Klarheit zu verlieren. Zumal kompakter Code häufig Hand in Hand mit mehr Klarheit geht. Meiner Ansicht nach (damit meine ich nicht die Formatierung des Quelltextes).
Das passiert insbesondere, wenn man zuviel in eine Codezeile packen will.
Aber auch dann, wenn man *einen* logischen Schritt auf zwei oder mehr Zeilen splittet. Einen Schritt zu zerreißen, verbessert nicht die Verständlichkeit, sondern verschlechtert sie.
Dieser Code ist hinsichtlich des "zuviel in einer Zeile" deutlich besser:
$display = !login();
if (! $display)
Ich sehe in diesem Beispiel weder einen Vorteil, noch einen Nachteil für deine Fassung.
> Und dann noch die doppelte Verneinung: Ganz blöd! Und der einzige Grund ist der mangelhafte Variablenname, dem man "Anzeigen? Ja!" aufgedrängt hat, und wenn das Login erfolgreich passiert, will man keine Anzeige.
Das ist mir nach dem Absenden meines Beitrags auch aufgefallen: Bessere Semantik hätte hier von Anfang an mehr Klarheit bringen können.
> Umbenennung der Variablen enthebt uns von dem beständigen "nicht-nicht-nicht":
>
> ~~~php
$hide = login();
> if ($hide)
Einverstanden - und ich würde trotzdem noch die Zuweisung in die Klammer des if-Statements setzen (wir sprachen neulich darüber), weil das für mich *ein* zusammenhängender logischer Schritt ist: Merken und Bewerten.
So long,
Martin
Lieber blau machen, als sich schwarz ärgern.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(