createColorHandler ist ein ziemlich unpassender Name. Zurückgegeben wird ja eine Step-Funktion für eine Farb-Animation.
Die aber nichts anderes als ein Handler für ein Timerevent ist.
aber createColorObj ist kein passender Name, eher createNextColorFunc
ja, (bis auf das next vielleicht, aber darüber kann man streiten)
Wieso nicht gleich die Animation als ganze wegkapseln?
So würde man das sicherlich lösen, wenn es die Aufgabe gewesen wäre.
Allgemein: Kapselung in der Programmierung ist kein Selbstzweck
Bis hier stimme ich dir noch zu.
und hat auch nichts mit von außen effektiv nicht sichtbaren Interna zu tun.
Doch! Genau das ist der Sinn!
Eine Funktion namens »red«? Sollte zumindest nextRead heißen.
red finde ich eigentlich ganz passend, es gibt den Rotanteil wieder, von daher sollte das Funktionsargument redMax heißen, m. M. n., aber die Bezeichner sind Geschmackssache.