Der Martin: Klammersetzung (ich seh grad den Wald vor lauter Bäumen nicht)

Beitrag lesen

Hallo,

(mysql_num_rows($result) %2 == 1)

vs.

(mysql_num_rows($result) & 1)

Deine Lösung mag vielleicht etwas schneller sein, ...

möglich, aber groß dürfte der Unterschied nicht sein.

aber definitiv ist sie obskurer, denn sie verbirgt ziemlich effektiv, was sie eigentlich bezwecken soll.

Aber ganz im Gegenteil! Die Funktion soll offensichtlich ungerade von geraden Zahlen unterscheiden. Wodurch zeichnen sich ungerade Zahlen aus? Doch dadurch, dass in ihrer Binärdarstellung das Bit0 gesetzt ist. Also ist es doch naheliegend und intuitiv, auch genau diese Bedingung direkt zu testen, anstatt eine Modulo-Operation zu formulieren, bei der man erst nach kurzem Grübeln über die Teilbarkeit durch 2 darauf kommt: "Ach ja, so könnte man's auch machen." Das ist ziemlich um die Ecke gedacht, finde ich.

Code wird in der Regel _einmal_ geschrieben. Aber danach von vielen Programmierern _sehr häufig_ wieder gelesen. Dieser Lesevorgang sollte so wenig Verwirrung hinterlassen, wie möglich.

Das spräche bei diesem Beispiel für die Verwendung der Bitmaskierung.

Deshalb sollte Codeklarheit bei allen Überlegungen immer oberstes Gebot sein.

ACK.

Vor allem, wenn man PHP programmiert.

Oh, ich finde, das sollte von der konkreten Programmiersprache unanhängig sein.

PHP ist deshalb toll, weil man damit in deutlich kürzerer Zeit zu Ergebnissen kommt, als mit anderen Sprachen. Die Performance mag an diesem Punkt vielleicht noch mies sein, aber immerhin hat man mindestens schon einen Prototypen, mit dem man experimentieren kann.

Und dabei bleibt's dann oft für die Ewigkeit. Wir wissen doch alle: Nichts ist so dauerhaft wie ein Provisorium, wenn's "funzt". ;-)

Ciao,
 Martin

--
Die letzten Worte des Helden:
Feigling! Traust dich ja doch nicht!