dedlfix: Was bewirkt ein Dollarzeichen mit geschweifter Klammer um Array?

Beitrag lesen

Hi!

Trotzdem scheint dir das Setzen von optionalen Dingen doch recht wichtig zu sein. Oder wie soll ich dann deuten, dass du für ein nicht weiter spezifiziertes Angewöhnen optionaler Dinge plädiertest?
So wichtig ist mir die Sache auch nicht - wie du oben erwähnt hast, ich meinte mit diesen optionalen Dingen eher Sachen syntaktischer Natur. Einrückungen, Umbrüche usw sind auch optional aber imho äußerst wichtig um sich in seinem (oder in fremdem) Code zurechtzufinden.

Einrückungen und Umbrüche sind (außer bei Python und teilweise Javascript) ästhetischer Natur und syntaktisch bedeutungslos, für die Verständlichkeit jedoch von hohem Wert. Optionale Zeichen haben keinen Einfluss auf das Ergebnis der Syntaxanalyse seitens des Parsers, sind also syntaktisch bedeutungslos. Ihr Wert für die Verständlichkeit des Codes ist meistens als gering einzuschätzen. Sie nur der Gewohnheit willen zu notieren, halte ich für keinen guten Grund.

Das widerspricht weder meiner Philosophie: anwendungsfallabhängige Betrachtung vor sturer Regelanwendung noch dem konkreten Beispiel. Bei dem einen Fall ging es um das letzte ; vor einem (nicht unbedingt letzten) ?> und beim anderen um das letzte ?> eines Dokuments.
Ich hab' kein Wort verstanden :)

Die potentiell problematischen Whitespaces können sich zwischen das letzte ?> und das Dateiende schleichen. Deswegen bringt es einen Vorteil, es wegzulassen und kann eben wegen der Whitespaces nachteilig sein, wenn man es notiert. Das ; _vor_ einem ?> ist eine andere Baustelle. Beiden ist nur ihre Optionalität gemeinsam. Ob da ein ; vor dem ?> steht, spielt ebenso keine Rolle wie die Anzahl der Whitespaces dazwischen. Das ist von den Auswirkungen her neutral.

Einige Programmierfehler bleiben gelegentlich unerkannt. Ein vergessenes ; beim Anfügen weiteren Codes erzeugt üblicherweise einen Syntaxfehler, fällt also zeitnah auf und verzögert das Testen nur minimal. Ein unüberlegtes ; zu viel kann sich hingegen länger versteckt halten.

if (bedingung);
  {
    anweisungen;
  }

Dies ist völlig korrekte Syntax. Bei nicht erfüllter Bedingung wird der Anweisungsblock ebenfalls ausgeführt. Das muss man beim Testen erst einmal bemerken. Und nicht immer findet man sofort die Ursache für ein Fehlverhalten. Die Art der Klammersetzung kann sogar noch dem Nichtfinden Vorschub leisten, weil das Semikolon und die {-Klammer einen räumlichen Abstand voneinander haben.

if (bedingung); {
    anweisungen;
  }

Steht die {-Klammer direkt nach dem ; könnte es eher auffallen, dass solch eine Syntax zumindest ungewöhnlich ist.

Deswegen plädiere ich dafür, aufmerksam und bewusst Zeichen zu setzen und nicht nur aus Gewohnheit welche hinzuschreiben.

Hier noch ein Beispiel, wo ich bewusst ein Komma setze:

$foo = array(
    bar,
    qux,
    baz,
  );

So notiere ich Array jedoch nicht immer. Ein Element pro Zeile braucht für mich einen Grund, wie Übersichtlichkeit oder eine benötigte leichte Erweiterbarkeit (Copy&Paste&Change oder Umsortieren). Ist das bei kleineren Array nicht gegeben, steht es eben so im Code:

$foo = array(bar, qux, baz);

Jedenfalls ist das Komma nach baz zwar syntaktisch nicht ganz korrekt, aber PHP stört sich nicht daran und erzeugt auch kein leeres Array-Element. Andere Sprachen, wie C# sind da leider pinglicher. Aber speziell bei C# hilft die sehr gute Syntaxunterstützung vom Visual Studio, ein vergessenes Komma beim Einfügen oder Umsortieren schon beim Code-Bearbeiten zu erkennen.

Lo!