Der Martin: Was bewirkt ein Dollarzeichen mit geschweifter Klammer um Array?

Beitrag lesen

Hallo,

Wenn ich mir angewöhne, eine Anweisung in PHP (Javascript, C) *immer* mit einem Semikolon abzuschließen, mach ich mir das Leben leichter, als wenn ich erst überlege, ob ich es an einer bestimmten Stelle nicht auch weglassen könnte.
Gerade Javascript wartet da mit recht gemeinen Eigenheiten auf, wenn man sich blind darauf verlässt, dass ein Semikolon eine Anweisung beendet.

ja, ich weiß - Javascript ist ja auch eine Art Bastard unter den Programmiersprachen. Ziemlich unanständig, ziemlich dreckig. PHP ist da nur wenig besser.

function foo() {
    return
      42;
  }
Der Rückgabewert der Funktion lautet? "undefined".

Richtig. Was manche noch viel seltsamer finden: Die Folgezeile 42; ist eine syntaktisch korrekte Anweisung (auch wenn sie hier nie ausgeführt wird).
Das ist eines der Merkmale von Javascript, die ich aufs schärfste kritisiere: Eine Anweisung kann schon mit dem Zeilenumbruch beendet sein, wenn es syntaktisch einigermaßen passt. Das Semikolon ist schmückendes Beiwerk; es kann dastehen, muss aber nicht. Find' ich ganz übel.

In diesem Beispiel darf die 42 einfach nicht in der nächsten Zeile stehen, Semikolon hin oder her.

Stimmt. IMO ein schwerer Designfehler der Sprache an sich.

Oder (Situation: PHP, innerhalb einer Funktion):

return ($variable);

Die Klammern sind hier optional, in anderen Situationen sind sie Pflicht, manchmal helfen sie einfach nur beim Vermitteln der Intention, werden aber wegen der Operatoren-Rangfolge eigentlich gar nicht gebraucht. Also kann es ja wohl nicht schaden, sie immer und auch hier zu notieren. Das geht auch solange gut, bis man mal nicht nur einen Wert sondern eine Referenz zurückgeben will, was durch die Klammern wirksam verhindert wird.

Wenn ich eine Referenz zurückgeben will, mache ich das durch ein vorangestelltes & deutlich. Dann sind auch die Klammern unschädlich. Ja, ich bin stark durch C geprägt. ;-)

Wegen solcherlei Fallstricken bin ich kein Fan von sturer Regelanwendung. Das Wissen ist wichtig, nicht stur gelernte und nicht hinterfragte Regeln.

Da will ich nicht widersprechen. Ich will auch nicht Nachdenken durch Gewohnheit ersetzen, sondern nur unterstützen.

Und nächste Woche erweitere ich mein Script, und das einst optionale Semikolon ist plötzlich nicht mehr optional.
Ja, und? Verstand ausgeschaltet beim Erweitern?

Nein, aber ich muss in einer schon existierenden Code-Zeile wieder etwas ändern und ergänzen. Das müsste nicht sein, wenn ich das Semikolon, das ja hier auch nicht schadet, gleich von Anfang an gesetzt hätte.

Weil du, wenn du es richtig machen willst, im Prinzip genausoviel Aufwand in das Überprüfen der Richtigkeit einer Angewohnheitshandlung stecken müsstest wie in das Finden der am besten zur Situation passenden Lösung.

Richtig. Trotzdem neige ich dazu, solche Freiheitsgrade *nicht* auszunutzen, sondern auch optionale Parameter oder Syntaxelemente hinzuschreiben.

Erfahrung hilft, sich schnell für den "richtigen" Weg entscheiden zu können. Erfahrung sollte aber nicht mit Scheuklappen verwechselt werden, finde ich.

Da sind wir uns einig.

Um sowas zu notieren, muss man aber schon in einem fortgeschrittenen Stadium geistiger Abwesenheit sein
Ich hoffe, du beziehst das nicht auch auf die Notation von Beispielen :-)

Natürlich nicht, Beispiele sollen ja manchmal gerade abschreckend sein.

Deswegen empfehle ich ja auch nicht, aus Gewohnheit am Ende jeder Zeile ein Semikolon zu setzen, sondern am Ende jeder Anweisung.
Klappt nur nicht in jedem Fall für Javascript. Schon versagt deine Gewohnheit.

Nö. Am Ende jeder Anweisung darf ich auch in Javascript ein Semikolon setzen. Ich darf nur nicht an jeder beliebigen Stelle einen Zeilenumbruch machen. Find' ich nicht okay, ist aber so.

Ich bin deswegen durchaus dafür, dass man sich durch konsequente Anwendung von Gewohnheiten das Leben leichter macht.
Das Problem ist nur, dass man leicht was übersehen kann, wenn man sich auf die Gewohnheiten verlässt, jedoch in Situationen kommt, in denen sie halt nicht passen und das nicht mitbekommt.

Ja, deswegen sollte man sich ja bitte die Regel angewöhnen und nicht eine der Ausnahmen.

Oder anders gesagt: sich zur Regel zu machen, Regeln immer zu hinterfragen.

Das tu ich als alter Rebell sowieso immer. Look, that's why there's rules: That you think before you break 'em.
Wenn ich jetzt noch wüsste, wo der Spruch herkommt ...

So long,
 Martin

--
Küssen ist die schönste Methode, eine Frau zum Schweigen zu bringen.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(