Sicherlich ist man auf eine gewisse Menge an Klassen angewiesen. Und solange man für den Netscape 4 mitschreibt, der die ganzen interessanten Selektoren nicht kennt, bleibt einem auch kaum etwas anderes übrig. Aber auch Netscape 4 kennt den Schachtel-Selektor:
table.blue tr td b { text-decoration:underline; font-weight:normal; color:blue; background-color:white; }
So kriegt man fetten Text in einer Tabelle der Klasse "blue" ohne zusätzliche Klassenangabe im <b> einfach blau (und unterstrichen und nicht-fett). Ohne daß irgendwas anderes blau würde. Wenn sowas eingesetzt wird, kann man später nämlich viel leichter an der HTML-Datei was ändern, ohne immer wissen zu müssen, welche Klassen es alle gibt, welche Bedeutung sie haben, und welche Klasse ich dem Link zuordnen muß, den ich gerade neu eingefügt habe. Das kann man natürlich auch bei den anderen Links alles abgucken - aber es behindert die freie Arbeit. CSS war mal dafür gedacht, Formatierungsarbeiten von HTML abzutrennen. Wenn man dennoch jedem Tag eine Klasse geben muß, ist dieser Vorteil zu mindestens 50% dahin.
Das o.g. ist nun aber Zweckentfremdung von HTML-Elementen pur. Was will ich mit einem <b> tag, der nicht fett macht? Das kann nun wirklich nicht der Sinn von CSS sein. Übrigens finde ich es schwieriger, sich zu merken, was die class="blue" nun innerhalb einer tabelle mit dem <b>-Tag macht, als einfach nur den Inhalt der allgemeinen "blue" class.