Diskussion:Yoda Conditions

Letzter Kommentar: vor 2 Jahren von Androl in Abschnitt Vertauschen der Bedingungswerte

Absatz Kritik. Moderne Programmiersprachen wie C# erlauben.... Bearbeiten

Dieser Abschnitt kann archiviert werden. schon seit Jahren erledigt (Satz steht nicht mehr so drin)

...das stimmt so ganz nicht: Ich kann in C# sehr wohl schreiben: if ((Variable = Eingabe) != 43) --copa017 (Diskussion) 09:45, 21. Okt. 2013 (CEST).Beantworten

Nur D? Bearbeiten

"In der Programmiersprache D haben Zuweisungen keinen Booleschen Datentyp" - das stimmt auch für Lua, Good Old PASCAL, praktisch alle SQL-Dialekte und -zig weitere - eigentlich praktisch alle, die nicht der C-Welt oder den funktionalen Progsprachen entstammen. Wieso wird hier ausgerechnet D (das m.W. kaum verwendet wird) herausgehoben? --Haraldmmueller (Diskussion) 10:59, 29. Jul. 2018 (CEST)Beantworten

"In der Programmiersprache D haben Zuweisungen keinen Booleschen Datentyp" stimmt genau genommen sowieso nicht. --Daniel5Ko (Diskussion) 12:39, 29. Jul. 2018 (CEST)Beantworten

Vertauschen der Bedingungswerte Bearbeiten

"Das Vertauschen der beiden Bedingungswerte ändert nichts am Verhalten des Programms."

Das mag bei C oder C++ sein, ist aber nicht auf alle Programmiersprachen übertragbar. Ein Gegenbeispiel ist Python:

if not(5>7) == True:
   print("5 is not greater 7")
if True == not(5>7):
   print("5 is not greater 7")

Siehe auch Why is 'True == not False' a syntax error in Python?

--5.158.162.136 15:44, 12. Okt. 2020 (CEST)Beantworten

Ich denke, was gemeint ist, ist, dass, wenn man Yoda Conditions einsetzt, die Voraussetzung ist, dass die Vertauschung nichts am Programmverhalten ändert. Wenn das nicht so ist, dann kann man eben nicht vertauschen (so "yoda" das wäre ...). Und so sollte man's dann auch formulieren, z.B.
Yoda Conditions kann man nur dort verwenden, wo das Vertauschen der beiden Bedingungswerte nichts am Verhalten des Programms ändert.
Ganz rausstreichen dieses Satzes ist m.E genau so schlecht, wie ihn drin stehen lassen, weil dann implizit viele Leser glauben, dass man das "immer" tun kann.
--Haraldmmueller (Diskussion) 16:15, 12. Okt. 2020 (CEST)Beantworten
Also Python ist kein Gegenbeispiel, der Code oben wird nur falsch interpretiert, richtig wäre:
if (not 5>7) == True:
   print("5 is not greater 7")
if True == (not 5>7):
   print("5 is not greater 7")
und das funktioniert. Natürlich darf das Vertauschen der Seiten nicht zu falscher Klammerung führen, sonst hat man nicht "die beiden Bedingungswerte vertauscht". --androl ☖☗ 16:15, 27. Okt. 2021 (CEST)Beantworten