Laden...

Syntax der If Abfrage Redundant

Erstellt von markus.bodlos vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.071 Views
M
markus.bodlos Themenstarter:in
205 Beiträge seit 2008
vor 15 Jahren
Syntax der If Abfrage Redundant

Hallo,

mal so aus Neugier, warum ist der Syntax in den 'C' Verwandten Sprachen bei den If Abfragen redundant?

Die Grundlegende If Abfrage schaut do so aus:


  if (2 == 3)
  {
     TuWas();
     ToNochWas();
  }

zwei runde Klammern schliessen die Prüfung ein und die Geschwungenen den auszuführenden Teil. Vereinfacht würde das doch auch so funktionieren:


  if 2 == 3
  {
     TuWas();
     ToNochWas();
  }

die Runden Klammern können entfernt werden weil sich auch hier feststellen lässt welcher Teil zur Prüfung gehört und welcher zur Ausführung.

Auch wenn ich den Einzeiler mache mit


  if (2 == 3)
     TuWas();

erspare ich mir gegenüber meiner Vorgeschlagenen Version nichts, sie würde eben nur so aussehen


  if 2 == 3
     {TuWas();}

Würde mich interessieren wenn mich jemand aufklären könnte 🙂

mfg Markus

6.862 Beiträge seit 2003
vor 15 Jahren

Warum irgendwer sich genau dafür entschieden hat weiß ich auch nicht, aber eine Syntax in sich muss ja konsistent sein. Argumente bzw. Parameter von Methoden werden ja auch in Klammern übergeben. Wenn man den boolschen Ausdruck der Bedingung als Argument der If Abfrage sieht, dann ist es nur logisch diesen auch in Klammern zu schreiben. Ohne die einschließenden Klammern siehts irgendwie seltsam aus find ich.

Baka wa shinanakya naoranai.

Mein XING Profil.

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo markus.bodlos,

wie du richtig erkannt hast, gibt es zwei Möglichkeiten, wie man Bedingung von Then-Teil trennt, mit runden Klammern um die Bedingung oder geschweiften Klammern um den Then-Teil. Man hat sich bei der Definition von C für ersteres entscheiden und die geschweiften Klammern optional gelassen. Darüber kann man nun sinnieren, aber da man eh eine Möglichkeit wählen musste, ist das müssig. Wäre die Entscheidung andersherum gefallen, würdest du vielleicht darüber sinnieren. 🙂

Im Prinzip ist es ja konsequent. Da wo ich eine Anweisung hinschreiben kann, kann man auch mehrere hinschreiben, wenn man sie in einem Block einschließt.

Ich bin zwar kein Fan davon, dass geschweifte Klammern optional sind und schreibe die geschweiften Klammern immer explizit, aber ich habe mich nie an den runden Klammern gestört und vermisse sie im Gegenteil eher bei anderen Sprachen.

Dass die geschweiften Klammern optional sind hat zumindest den Vorteil, das man dadurch else-if-Ketten bauen kann, ohne sich unnötigen in Schachtelungen zu verlieren.


if (...) {
   ...
} else if (...) {
   ...
} else if (...) {
   ...
}

Das hätte man sicher auch durch ein elseif- oder elsif-Schlüsselwort hinbekommen, aber Sparsamkeit bei Schlüsselworten war ein erklärtes Designziel von C.

herbivore

M
markus.bodlos Themenstarter:in
205 Beiträge seit 2008
vor 15 Jahren

Danke für eure Meinungen.

Hatte es bisher noch nie als Methodenaufruf gesehen klingt aber schlüssig. Ich fülle mich ohnehin nicht gestört von diesem Syntax, im Gegenteil schreibe gern in 'C' Sprachen, wollte nur wissen warum man sowas macht (beschäftige mich gerade mit dem Parsen und Compilerbau)

mfg Markus