Ist das Schlechter Stil?
-
Schneller auch?
yCaret wird sicher nirgendwo sonst verändert - außer in diesen Befehlen. Deswegen würde ich in diesem Fall nicht die sichere sondern die schnellere Variante benützen.
Und ich dachte != ist einfach zu prüfen als <.
MfG SideWinder
-
nö, AFAIK sind auf x86er (ich geh davon aus, dass du auf einem x86er arbeitest, weil ich ja weiss, dass du auf jeden Fall Windoze nimmst
und das gibt dir ja eh keine anderen Möglichkeiten :p ), sind AFAIK alle bedingten Sprünge gleich schnell.
dh. < > != == etc. sollten gleich schnell sein.
-
Jo, vor Allem muss er ja bei deiner Version vorher noch rechnen... und auch wenn. In diesem Fall wirst du die Geschwindigkeit kaum spüren. Da gibts andere Dinge bei denen Optimieren viel eher gerechtfertigt ist...
-junix
-
kingruedi schrieb:
nö, AFAIK sind auf x86er (ich geh davon aus, dass du auf einem x86er arbeitest, weil ich ja weiss, dass du auf jeden Fall Windoze nimmst
und das gibt dir ja eh keine anderen Möglichkeiten :p ), sind AFAIK alle bedingten Sprünge gleich schnell.
dh. < > != == etc. sollten gleich schnell sein.
Gut aber ist das auf dem Toaster auch so? Mein Programm läuft auf einem Toaster, da die naturgemäß nicht so schnell sind muss ich natürlich bei solchen Vergleichen sparen ;).
Danke, also dann baue ich auch noch die Sicherheitsabfrage ein.
MfG SideWinder
-
Hallo,
also ich sehe das Richtung junix.
Geschmacklich gefällt mir schon mal garnicht, dass du keine Leerzeichen bei den Operatoren verwendest.
Ich halte die verbreitete Regel: Op1 binOp Op2 (-> 22 + 33)
für sehr viel angenehmer zu lesen als Op1binOpOp2 (->22+33)Das ++yCaret aber in die if-Bedingung zu packen halte ich für missbrauch. Schließlich bedeutet das für die Bedingung if (a && true). Wenn nicht, ist irgendwas mit deinem Programm kaputt. Auf jeden Fall glorifizierst du den Seiteneffekt.
Und man kann sich dann eben beim Betrachten nicht mehr auf das Wesentliche konzentrieren
Wenn es darum geht, dann würde ich auch nur das wesentliche Hinschreiben. Wichtig ist, dass beim VK_DOWN der yCaret erhört wird:
case VK_DOWN: incYCaret(); break;
Fertig.
Das kostet dich zwar letztlich wohl ein paar Zeilen mehr, aber erstens wird der Code klarer und zweitens verstreust du nicht überall diese != MaxCaret-1 abfragen.
-
HumeSikkins schrieb:
Das ++yCaret aber in die if-Bedingung zu packen halte ich für missbrauch.
Eigentlich ist
yCaret != MaxRows-1 && ++yCaret;
auch Mißbrauch, wird aber wenigstens von C- und Perl-Programmieren auf den ersten Blick verstanden :).
-
Nochmal zur Anfangsidee: Wozu überhaupt eine if-Anweisung, wenn von der Bedingung nichts abhängt? Ausdrücke auswerten kann man auch ohne, d.h. der Code sähe so aus:
case VK_DOWN: yCaret != MaxRows - 1 && ++yCaret; break;
Nicht, dass ich das so empfehlen würde, aber das sieht man tatsächlich hin und wieder.
-
case VK_DOWN: if(!atEnd()) goDown(); break;
Stefan.
-
case VK_DOWN: if(yCaret!=MaxRows-1&&++yCaret); break;
also sowas würd ich auf keinen fall verwenden! wenn du das programm allein schreibst ist das vielleicht noch ok, aber wenn später jemand deinen code lesen oder sogar verändern muss hat der dann en zeimliches prob. weil man da nicht genaut blickt, was du eigentlich machen wolltest. leider sieht man solche code oft in der crt
auf jeden fall mindestens sowas
case VK_DOWN: if(yCaret!=MaxRows-1) ++yCaret; break;
-
@DStefan
Was gute Namen doch alles ausmachenGenau auf sowas wollte ich mit meinem, zugegebenermaßen nicht gelungenen, Beispiel hinaus.