dedlfix: Schöne quelltexte

Beitrag lesen

Hi!

Welche Vorteile hat ein Programmierer überhaupt davon?

Kaum einen, üblicherweise. Wenn man seine Ausgabe analysieren will, ist es vorteilhaft, wenn diese gut lesbar ist. Ansonsten ist der Quelltext normalerwiese für den Browser bestimmt, der sich überhaupt nicht um die Formatierung kümmert. Will man sich selbst allerdings auch mit Hilfe des Quelltextes präsentieren, so tut man gut daran, ihn ordentlich schreiben zu lassen.

Alles hat seine Vor- und Nachteile. Hat man beispielsweise eine Code-Komponente, die ein fertiges Stück HTML erzeugt - zum Beispiel ein Formulargenerator oder ein Datagrid (Ausgabe von tabellarischen Daten) - so muss man dieser noch generell die aktuelle Einrückungsebene übergeben und Code dazuschreiben, der diese immer in die Ausgabe einfügt. Damit wird der Code der Komponente nicht einfacher. Die Frage ist, ob sich der zusätzliche Code inklusive Wartung und auch der damit verbundene Rechenaufwand rentiert.

Wenn man statische HTML-Seiten schreibt ist es für die eigene Überischt besser, wenn man Zeilen entsprechend einrückt. Aber wenn man dynamische Seiten erzeugt reicht es doch, wenn es im Quellcode (z.B. PHP oder Perl) übersichtlich angeordnet ist. Wie dann der erzeugte Quellcode (optisch) aussieht ist doch eigentlich egal?

Die Frage ist, wo hat man den größeren Nachteil. Schreibe ich den Text so, dass er in der Ausgabe ordentlich aussieht, sieht es vielleicht bei mir im Code schrecklich aus, weil die Einrückungsebnen von PHP nicht mit denen des zukünftigen HTML übereinstimmen.

Allerdings kann man mit dem EVA-Prinzip schon eine Menge Sortierung und Ordnung in seinen Code bringen. Dabei gestaltet man seinen Ablauf so, dass die Verarbeitung nur reine Daten erzeugt und kein HTML direkt ausgibt. Dafür ist dann der Ausgabeteil zuständig. So kann man sich die Probleme mit der Vermischung der verschiedenen Ebenen (PHP und HTML) klein halten.

if (...) {  
  if (...) {  
    if (...) {  
      if (...) {  
        echo "  <table>\n";  
        foreach (...) {  
          echo "    <tr>  
      <td>foo</td>  
      <td>bar</td>  
    </tr>\n";  
        }  
        echo "  </table>\n";  
      }  
    }  
  }  
}

So sieht das vielleicht in der Ausgabe ordentlich aus, aber hier nicht. Es wird auch nicht besser, mit der Heredoc-Syntax:

if (...) {  
  if (...) {  
    if (...) {  
      if (...) {  
        echo "  <table>\n";  
        foreach (...) {  
          echo <<<LINE  
    <tr>  
      <td>foo</td>  
      <td>bar</td>  
    </tr>  
LINE;  
        }  
        echo "  </table>\n";  
      }  
    }  
  }  
}

Wie wär's mit EVA?

$table = array();  
if (...) {  
  if (...) {  
    if (...) {  
      if (...) {  
        foreach (...) {  
          $table[] = array('foo', 'bar');  
        }  
      }  
    }  
  }  
}

?>
[...]

  <table>  
    <?php foreach ($table as $row): ?>  
    <tr>  
      <td><?php h($row[0]) ?></td>  
      <td><?php h($row[1]) ?></td>  
    </tr>  
    <?php endforeach; ?>  
  </table>

h() ist in dem Beispiel eine Abkürzung und sieht in Gänze mindestens so aus:

function h($s) {  
  echo htmlspecialchars($s);  
}

Wenn man den HTML-Output analysieren will kann man auch ein Tool wie Firebug benutzen, das das ganze dann wieder übersichtlich darstellt.

Jein. Damit bekommt man ein interpretiertes Ergebnis, und Browser sind bekanntlich fehlertolerant. Mit dieser Anzeige findet man nicht alle Probleme, die ein Validator ankreiden würde.

Lo!