Laden...

Diskussion um Anfängerfehler == true / == false

Erstellt von herbivore vor 17 Jahren Letzter Beitrag vor 17 Jahren 9.039 Views
L
667 Beiträge seit 2004
vor 17 Jahren

lol ... mehr fällt mir zu dieser Diskussion ehrlich gesagt nicht mehr ein. Streitet Euch doch mal drum, ob man Variablen groß oder klein schreibt 🙂

Also ehrlich, jeder wie er es mag. Bei uns in der Firma gibt es für diese spezielle Frage keine feste Richtlinie, manche schreiben == true, andere nicht. Ich selbst bin da völlig unvoreingenommen, lasse == true / false eigentlich immer weg, weil ich es aus C/C++ gewöhnt bin.

Ob darunter nun die Lesbarkeit leidet, kann ich nicht sagen. Ich selbst fühle mich eher irritiert wenn ich sowas wie == true lese.

Auf jeden Fall ist das kein "Anfängerfehler", sondern bestenfalls eine Vorliebe des jeweiligen Programmierers. Da die Formulierung "Anfängerfehler" von herbivore kommt, würde ich das Ganze aber nicht überbewerten. Ich glaube es gibt - vorsichtig ausgedrückt - seriösere Mitglieder dieser Community.

"It is not wise to be wise" - Sun Tzu

2.891 Beiträge seit 2004
vor 17 Jahren

Hey, tolles Entertainment hier im Forum! Das hat doch was...

Original von VizOne
Anderes Beispiel - der vollkommen weltfremde Code von Zero:

bool o = ((((((((x == true) ? true : false) == true) ? true : false) == true) ? true : false) == true) ? true : false);  
  

Da hier viele ein Praxisbeispiel dafür haben wollen, hier eins 😄:

BeschrAEPos += "   [" + tempArt + "] " + ((myProperties.BeschriftungAE == TMS.FormEinstellungen.BeschriftungenAE.Langtext) ? "\r\n" : "") + ((AEPos.ID_Beleg != "") ? ("(" + AEPos.ID_Beleg + ") ") : ((AEPos.ID_Rechnung != "" && AEPos.ID_Rechnung != null) ? ("(" + AEPos.ID_Rechnung + ") ") : "")) + ((AEPos.AEPosDL.Text != "" && (tempArt == "IN" || myProperties.BeschriftungAE == TMS.FormEinstellungen.BeschriftungenAE.Langtext)) ? ((myProperties.BeschriftungAE != TMS.FormEinstellungen.BeschriftungenAE.Langtext && AEPos.AEPosDL.Text.Length > 60) ? (AEPos.AEPosDL.Text.Substring(0, 60).Replace("\r\n", ", ").Replace("- ", "") + "...") : AEPos.AEPosDL.Text) : AEPos.KurzBeschr) + "\r\n";

Original von VizOne
In diesem Ungetüm kann auch ein "== true" der Codequalität nicht mehr helfen.

Dem kann ich aber nur ABSOLUT zustimmen...

T
512 Beiträge seit 2006
vor 17 Jahren

Mit string.Format kannst vieleicht noch etwas davon retten 😉

e.f.q.

Aus Falschem folgt Beliebiges

2.082 Beiträge seit 2005
vor 17 Jahren

Erm lol?

Mit string.Format kannst vieleicht noch etwas davon retten

Oder StringBuilder 😉

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

N
4.644 Beiträge seit 2004
vor 17 Jahren

Original von frisch
Erm lol?

Mit string.Format kannst vieleicht noch etwas davon retten
Oder StringBuilder 😉

Den benutzt string.Format doch intern schon.

2.082 Beiträge seit 2005
vor 17 Jahren

Den benutzt string.Format doch intern schon. Ja aber wär doch mal ganz nett wenn dann sowas dasteht wie:

myStrBuilder.Appen(strVar1).Append(" und ").Append(strVar2).Append(" und ").Append(strVar3).Append(" und ")...... usw.

Imho sollte der Thread eh geschlossen werden. Alles ist ja wohl gesagt, was es zu sagen gibt und Sinn macht es jetzt auch keinen mehr darüber zu diskutieren!

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

L
25 Beiträge seit 2006
vor 17 Jahren

Irgendwie geht mir Diskussion zu sehr am Thema vorbei, es geht mittlerweile nicht mehr darum ob man == true schreibt oder nicht.

Es geht scheinbar nur noch darum sich gegenseitig die Kompetenz abzusagen.

Wer '== true' benutzt, hat m.E. noch nicht vollständig verstanden, was eine boolsche Variable ist. Mit dieser direkte Aussage will ich niemanden kränken, sondern meine das rein sachlich.

Ich verstehe nich was man an der Aussage bemängeln kann, denn wer die boolesche Algebra kennt weiss nun einmal, dass x == true immer x ist.

mfg LoBi

0x0D 0x0A

T
512 Beiträge seit 2006
vor 17 Jahren

Damit man das noch schneller erkennt könnte man doch auch "&& true" und "|| false" schreiben.

Und was ist eigentlich besser, "== true" oder "!= false"?

Oder "^ false" statt "!= false" und "^ true" statt "!= true"

e.f.q.

Aus Falschem folgt Beliebiges

K
174 Beiträge seit 2006
vor 17 Jahren
?

Hallo zusammen,

ick muss jetzt auch mal meinen Senf dazu geben 😄!

Also ich finde


bool bIrgendwas = true;

//...

if(bIrgendwas)
{
    //....
}

lesbarer. Denn meiner Meinung nach ist ist

if(bIrgendwas==true)

ja auch ein Vergleich... Und wenn ich jetzt Zero's Empfehlung folgen würde müsste ich ja theoretisch

if((bIrgendwas==true)==true)

oder in einem anderen Fall

if((bIrgendwas==false)==true)

(==> ewig fortführbar) schreiben... oder sehe ich das jetzt völlig falsch.
Ich weiß, es ist ein übertriebenes Beispiel, aber es unterstützt herbivore's Aussage über den Unterschied zwischen 'true' und 'wahr'.

oder was ist hiermit:


const bool bTrue = true;

if((bIrgendwas==bTrue)==true)
    //...

????

Also ich benutze true/false nur für Zuweisungen. Außerdem weiß man doch, dass ein if in seinem kopf letztendlich immer auf 'wahr' prüft... und wehr


if(bIrgendwas==true)

lesbarer findet als


if(bIrgendwas)

der nutzt '==true' meiner Meinung nach nur als eine Gedächtnisstütze, um sich daran zu erinnern wie ein if eigentlich funzt. 😄. Und um damit auf die von Zero erwähnten Bewerbungsgespräche zu kommen.... wer will schon nen programmierer mit altzheimer...???

Grüße und noch nen schönen Abend,
Kani

139 Beiträge seit 2006
vor 17 Jahren

Ich für meinen Teil bestehe auf das == und Namen wie IsAktivated....
Für das Compailierte Programm macht es eh keinen Unterschied ob man es weglässt oder nicht. Ich denke es ist kein "Anfängerfehler", weil es das Programm nicht verändert und nicht unbrauchbar macht sondern nur die Syntax übersichltlicher darstellt.

Hier von einem "Fehler", sondern von der spezifischen Syntax eines Programmieres die Rede. Natürlich, ist es doppelt geschrieben.... aber kein Grund von einem Fehler zu sprechen...

Ich finde diese Duskussion etwas stupide

if erwartet einen boolnischen Wert, der Operator == vergleicht zwei boolnische Werte, true ist der Absolutwert für die Wahrheit.... == Argument entspricht der Warheit / Argument entspricht der Unwahrheit.....

Wenn es stimmt das es Unwahr ist...
Wenn es stimmt das es Nicht Wahr ist...

Original von dN!3L
Hey, tolles Entertainment hier im Forum! Das hat doch was...

Original von VizOne
Anderes Beispiel - der vollkommen weltfremde Code von Zero:

bool o = ((((((((x == true) ? true : false) == true) ? true : false) == true) ? true : false) == true) ? true : false);  
  

Da hier viele ein Praxisbeispiel dafür haben wollen, hier eins 😄:

BeschrAEPos += "   [" + tempArt + "] " + ((myProperties.BeschriftungAE == TMS.FormEinstellungen.BeschriftungenAE.Langtext) ? "\r\n" : "") + ((AEPos.ID_Beleg != "") ? ("(" + AEPos.ID_Beleg + ") ") : ((AEPos.ID_Rechnung != "" && AEPos.ID_Rechnung != null) ? ("(" + AEPos.ID_Rechnung + ") ") : "")) + ((AEPos.AEPosDL.Text != "" && (tempArt == "IN" || myProperties.BeschriftungAE == TMS.FormEinstellungen.BeschriftungenAE.Langtext)) ? ((myProperties.BeschriftungAE != TMS.FormEinstellungen.BeschriftungenAE.Langtext && AEPos.AEPosDL.Text.Length > 60) ? (AEPos.AEPosDL.Text.Substring(0, 60).Replace("\r\n", ", ").Replace("- ", "") + "...") : AEPos.AEPosDL.Text) : AEPos.KurzBeschr) + "\r\n";  

Das macht ebenfalls keinen Unterschied am Sorce, also: Warum schreibt ihr nicht so? Warum die Zeitauswändigen Zeilenvorschübe setzen...ist doch unnütze.....ironie

Aber wofür soll das gut sein? – Advanced Computing Systems Division von IBM, 1968, zum Microchip

X
40 Beiträge seit 2005
vor 17 Jahren

Ich weiss gar nicht was es daran zu diskutieren gibt, McConnell gibt herbivore recht -> EOD 😁

N
750 Beiträge seit 2004
vor 17 Jahren

if erwartet einen boolnischen Wert,
der Operator == vergleicht zwei boolnische Werte

zum ersten teil: ja (auch wenn es Boolscher Wert heisst)
zum zweiten Teil: das halte ich für ein gerücht.

muss halt auch mal meinen senf hier zu geben.
ich schliesse mich herbivore an.
und finde (persönlich) den Vergleich mit == true überflüssig.
aber die diskussion hier läuft irgendwie aus dem ruder.

neuer thread mit schlagabtausch: Schreibt ihr x != NULL oder NULL != x ...
den kann aber wer anders eröffnen.....

danke 🙂
(ab jetzt les ich hier auch nicht mehr rum.....)

?( wer suchet, der findet auch! :]

139 Beiträge seit 2006
vor 17 Jahren

Dann beschränke ich mich dafrauf dass == Die Werte auf den Zwei Seiten miteinander vergleicht und 0 oder 1 zurückliefert....

Naja und der vergleichswert steht bei mir immer rechts ^^
(Siehe IsAktivated == true / true == IsAktivated)

Vielleicht wird es endlich Zeit eine Programmiersprache zu verfassen, auf der nichteinmal ein Leerzeichen zu viel sein darf 🤔

Aber wofür soll das gut sein? – Advanced Computing Systems Division von IBM, 1968, zum Microchip

4.207 Beiträge seit 2003
vor 17 Jahren

== liefert nicht 0 oder 1, sondern true oder false.

Und was Deinen "Vergleichswert" angeht, gehst Du davon aus, dass der immer fix ist ... muss er doch aber nicht sein?

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

B
1.529 Beiträge seit 2006
vor 17 Jahren

Ich finde diese ganze Diskussion eher müßig.

Der Compiler wertet den if-Kopf immer zu einem Boolean aus. Ob jetzt Operatoren wie "==", "!=", "&&" usw. benutzt werden oder nicht ändert daran nichts.
Daher ist es einfach nur von der zu prüfenden Variable abhängig, welche Variante die sinnvollste ist. Wenn man auf den ersten Blick nicht durchschauen kann, was da geprüft wird, sollte eh ein Kommentar geschrieben werden.

Und ob man nun "== true" und "== false" (bzw. "!= false" und "!= true") anhängt, macht technisch gesehen keinerlei Unterschied.
Ich schreibe es nicht. (Jeder Tastendruck kostet Geld 😉)

Desweiteren würde ich aber auch nicht unter einem Projektmanager arbeiten wollen, der mir solcherlei Redundanzen mit aller Beharrlichkeit vorschreiben will.

T
512 Beiträge seit 2006
vor 17 Jahren

Original von Nordwald
Vielleicht wird es endlich Zeit eine Programmiersprache zu verfassen, auf der nichteinmal ein Leerzeichen zu viel sein darf 🤔

Whitespace 😁

e.f.q.

Aus Falschem folgt Beliebiges

2.082 Beiträge seit 2005
vor 17 Jahren

Rofl... und damit soll man arbeiten können?

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

1.985 Beiträge seit 2004
vor 17 Jahren

Hallo frisch,

nein, dafür sind solche Sprache nicht gedacht. Brainfuck gehört beispielsweise auch dazu: http://de.wikipedia.org/wiki/Brainfuck.

Diese Sprachen gehören zu den esoterischen Sprachen. Wikipedia sagt da folgendes zu:

Esoterische Programmiersprachen sind Programmiersprachen, die nicht für ernsthafte Programmierung, sondern meistens als anspruchsvolle Scherze gedacht sind

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

N
750 Beiträge seit 2004
vor 17 Jahren

ich werd darauf umsteigen, dann brauch ich mir über den ganzen Sch***, mit '== true' oder nicht, auch keine gedanken mehr machen 😁

?( wer suchet, der findet auch! :]

2.082 Beiträge seit 2005
vor 17 Jahren

Diese Sprachen gehören zu den esoterischen Sprachen. Nach näherem hinschauen ist mir das auch aufgefallen 😉

Finds trotzdem genial...

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de