molily: Stilkritik

Beitrag lesen

Die _Grund_information ist [R, G, B] = [0xF1, 0x63, 0xC]. ... letztendlich brauchst du das als String, also kannst du den Wert auch so notieren. ... Die Notation von 0x10000 · R + 0x100 · G + B als Zahl ist für mich nichts Halbes und nichts Ganzes.

Das stimmt. Das ist mir nach Absenden meines Postings auch aufgefallen, dass ich da nicht konsequent argumentiert habe. Aus semantischer Sicht ist das Tripel korrekt, aus praktischer Sicht der String. Dass ich etwas dazwischen vertreten habe, war mir schon klar.
Ob ich nun '#XXXXXX' oder 0xXXXXXX notiere, bringt auch erstmal keine nennenswerte Verkürzung. Allerdings kann ein Komprimierer manche Zahlen verkürzen, so wird aus 0x00FF00 automatisch 65280, aus 0x000000 einfach 0. Bei Strings bin ich auf '#000000' oder 'black' festgelegt.

Hätte ich schreiben sollen

var className;

if (diff<1) className = 'diffrange_0_1';
else if (diff<4) className = 'diffrange_1_4';
else if (diff<10) className = 'diffrange_4_10';
else if (diff<15) className = 'diffrange_10_15';
spans[q].className = className;


>   
> und wenn ja, warum? Optimierung der Codelänge zu Lasten der Ausführungszeit?  
  
Die Bestimmung des Klassennamens anhand von diff ist eine Aufgabe. Eine andere ist es, mit dieser Klasse etwas zu tun. Sowohl jene Logik als auch diese Verarbeitung können sich unabhängig voneinander ändern. Wenn ich letzteres ändern will, z.B. eine addClass-Helferfunktion oder die HTML5 classList verwende, muss ich es bei der Wiederholung von »spans[q].className =« x-mal ändern. Gleichen Code sollte man nicht wiederholen, sondern zentralisieren (»Don't repeat yourself«).  
  
Was die Ausführungszeit angeht, so vermute ich, dass diese Variante von JIT-Compilern besser optimiert werden kann, weil in den if-Anweisungsblöcken nur eine Variablenzuweisung steht. So fällt die Deklaration der Variable vermutlich nicht ins Gewicht.  
  
Mathias