LX: Probleme mit unsemantischem Code

Beitrag lesen

Das hat mit Fähigkeiten eher wenig zu tun. Ich KÖNNTE es auch mit DIVs & Co. erledigen. Würde ggf. länger dauern, weil ich es umständlicher finde, z.B. sowas darzustellen (...)

Das hat doch etwas mit Fähigkeiten zu tun, in diesem Fall die Fähigkeit, einen Aufbau semantisch zu gliedern.

--------------------------------------------------
Headline
--------------------------------------------------
Status                                  Navigation
--------------------------------------------------

Stattdessen hast Du Daten ohne jeden tabellarischen Bezug in eine Tabelle gepackt. Die Headline ist vermutlich h2 oder h3, je nachdem, in welcher Gliederungsebene man sich befindet. Status scheint semantisch am Besten in einem div aufgehoben zu sein, während die Navigation entweder eine ul-Liste ist oder in HTML5 sogar noch semantischer in einem nav-Element unterkommt.

Vergleichen wir also mal die beiden Ansätze vom Code her. Deiner sieht etwa so aus (ich habe ein wenig geraten, bitte sehe mir nach, wenn sich der Code nicht zu 100% mit Deinem deckt):

<table>  
  <tr>  
    <th colspan="2">  
      <strong>Forum</strong>  
    </th>  
  </tr>  
  <tr>  
    <td>29 Themen auf 3 Seiten (275 Beiträge)</td>  
    <td align="right"><a href="..."><img .../> Foren-Suche</a> | <a href="">Neues Thema starten</a></td>  
  </tr>  
</table>

Semantischer geht es so:

<h3>Forum</h3>  
<div class="status">29 Themen auf 3 Seiten (275 Beiträge)</div>  
<ul class="nav">  
  <li class="first suche"><a href="...">Foren-Suche</a></li>  
  <li class="last"><a href="...">Neues Thema starten</a></li>  
</ul>

Ich habe an meinem Code wesentlich kürzer geschrieben als an Deinem - und das CSS, welches in jedem Fall für das Layout hinzukommt, wird auch nicht so viel komplizierter.

Weiter geht's, wenn ich alle Spalten gleich hoch haben möchte. Bei Tabellen geschieht das automatisch. Wenn Spalte 2 aufgrund ihres Inhalts 1000 Pixel hoch ist, ist das Spalte 1 auch. Ohne, dass ich irgendwas machen muss. Und genau so erwarte ich das auch... gerade beim Layout...

Dafür gibt es gleich mehrere praktikable Lösungen, die ohne den semantischen Mißbrauch einer Tabelle auskommen.

... und wie schon gesagt, ich finde ein paar verschachtelte Tabellen deutlich einfacher zu verwalten als eine wild durcheinanderpositionierte DIV-Suppe, mit IDs, die ich erst in der CSS-Datei heraussuchen muss. (...)

Bitte zeige mir, wo in meinem Code eine DIV-Suppe steckt? Bei Bedarf hätte ich das einzige div auch durch p oder dfn ersetzen können, sah jedoch dazu keine Veranlassung. Übrigens: Die Lösung für das Problem "Div-Suppe" sind flache HTML-Strukturen, nicht Tabellen-Layout.

Aber wie schon gesagt: Ansichtssache...

Semantik ist wie Objektorientierung ein Konzept. Natürlich kann man letztlich unterschiedlicher Ansicht sein, ob das Konzept der Problemstellung angemessen ist. Allerdings sehe ich keinen validen Grund, auf Semantik zu verzichten, wenn sie ohne zusätzlichen Aufwand funktioniert.

Gerade als "Profi", sollte man auch solchen Code lesen können. Das kann ja sogar ich. Klar, sollte da nicht nur Gülle stehen, aber ein Rat "Bau erstmal Deine Seite neu" gegenüber einem Nicht-Profi bzgl. eines kleinen Problemes ist kein "professioneller Standpunkt", sondern - wie schon gesagt - "arrogant"...

Ich kann solchen Code durchaus lesen und auch produzieren. Etwa Mailings können wegen Outlook fast nur mit Tabellenlayout erstellt werden - und an dieser Stelle habe ich auch durchaus Verständnis. Es gibt auch andere Situationen (etwa bei manchen mobilen Browsern), in denen man gezwungen ist, von semantischen Strukturen abzuweichen - aber genau das ist es: ein Abweichen. Wenn ich diese Code-Pathologie als Notwendigkeit erkenne, ist das etwas anderes, als wenn ich die Entartung als Normalität akzeptiere.

Abgesehen davon: wenn sich solche Schwächen erst einmal einschleifen, bekommt man später Probleme, sich wieder von ihnen zu lösen.

Dem normalen Besucher der Seite fällt beim Betrachten der Webseite an sich kein Unterschied auf, ob diese nun aus Tabellen oder aus DIVs besteht. Und allein darum geht es mir... Und wenn die Seite einwandfrei funktioniert und so aussieht, wie sie aussehen soll, gibt es einfach keinen Grund, von Tabellen- auf CSS-Layout zu wechseln. Punkt. Es sei denn, man selbst fühlt sich mit dem Code besser.

Das ist nur so lange wahr, wie man reine Desktop-Clients mit handelsüblichen Auflösungen annimmt. Sobald man in Themen wie mobiles Internet, Barrierefreiheit etc. einsteigt, macht es einen großen Unterschied. Abgesehen davon habe ich nicht den Browser War überlebt, um mir Jahre später den gleichen Müll anzusehen.

Aber was ich hauptsächlich sagen möchte:
Überfordert die Leute nicht immer gleich mit "Bau erstmal Deine Seite komplett um", wenn es um ein einfaches Problem geht...

Wie ich schon sagte, wäre es kein kompletter Umbau, sondern lediglich ein paar Tags und etwas CSS, die ausgetauscht hätten werden müssen. Du tust gleich so, als wären damit gleich 30 Arbeitsstunden verbunden. Wer damit überfordert ist, kann durchaus Rückfragen stellen. Wir sind keine elitären Snobs, sondern mehr oder weniger erfahrene Entwickler.

Gruß, LX

--
RFC 2324, Satz 7 (Sicherheit): Jeder, der zwischen meinem Kaffee und mir steht, gilt als unsicher.