HTML-Kommentare: Weg damit!

Kommentare bietet fast jede Programmier- bzw. Scriptsprache. Sie dienen dazu, dass auch andere Entwickler den erstellten Code auf Anhieb verstehen und sich nicht erst mühsam hineinarbeiten müssen. Andererseits sind sie auch ganz nützlich, wenn man nach Monaten oder Jahren eine Änderung an einem (eigenen) Script oder Programm durchführen möchte. Ohne Kommentare versteht man manchmal den eigenen Code nicht mehr.
Auch HTML bietet diese Funktion. Doch ist diese unter bestimmten Bedingungen nur sehr beschränkt nützlich und nötig.

Kommentare werden in HTML so erstellt:

<!--
Dies ist ein HTML-Kommentar
-->

Immer wieder sehe ich bei Scripts, dass derzeit nicht benötigte Code-Teile einfach auskommentiert werden, weil man sie eventuell später nochmal benötigt. Das ist auch sinnvoll, allerdings sollte man es niemals mit HTML-Kommentaren machen, wenn es sich um ein PHP-Script handelt!

2 Nachteile
HTML-Kommentare haben zwei Nachteile: Zuerst einmal blähen sie den zum Client zu übertragenden Code unnötig auf. Den Besucher interessiert der einer Webseite zugrunde liegende HTML-Code nicht. Er möchte, dass die Seite benutzbar, übersichtlich, hübsch usw. ist – warum der Browser die Seite so anzeigt, ist dem Besucher völlig egal. Deshalb gucken sich auch die wenigsten Nicht-Entwickler den Quelltext einer Seite an.
HTML-Kommentare ändern nun aber nichts an der Darstellung der Seite im Browser des Nutzers. Er ärgert sich nur, wenn die Übertragung der Webseite länger dauert.
Die einzige Ausnahme, wann HTML-Kommentare die Darstellung verändern, sind Conditional Coments und Server Side Includes (wobei letztere heute wohl kaum noch genutzt werden). Diese Kommentare sind natürlich nicht unnötig und dürfen natürlich drin bleiben. Alle anderen sollten entfernt bzw. ersetzt werden.

Der zweite Nachteil, wenn man einfach nicht mehr benötigte Code-Teile drin lässt, sind eventuelle Sicherheitsbedenken. Wenn man ganze Form-Elemente beispielsweise auskommentiert, sollte man sich nicht wundern, wenn auf einmal dieses Formular doch benutzt wird und eventuell schadhafter Code eingeschleust wird. Ein Angreifer muss sich die Webseite ja nur lokal speichern, die Kommentare entfernen und hat dann freie Hand.

Sinnvoller Ersatz
Wie oben bereits gesagt, sind Kommentare ja sehr sinnvoll. Da sie nur für Entwickler interessant sind, können sie auch ausschließlich serverseitig verwendet werden – also als PHP-Kommentare. Und dort stört es auch nicht, wenn innerhalb des Kommentars der HTML-Code enthalten ist.

<body>
Sichtbarer Text
<?php /* ?>
Kommentar-Text, gern auch <b>mit HTML-Tags</b>
<?php
*/
?>
</body>

Übrigens fügen auch viele externe Dienste HTML-Kommentare ein. Zum Beispiel enthält der HTML-Code zur Einbindung des Ebay Relevance Ads (ein Werbemittel des Ebay-Partnerprogramms) HTML-Kommentare:

<!-- eBay RelevanceAd -->
<script language='JavaScript' type='text/javascript'>
//<-- DO NOT CHANGE -->
...
</script>
<!-- /eBay RelevanceAd -->

Diese HTML-Kommentare sind völlig unnötig und allein darin begründet, dass ein unbedarfter Webmaster aus Versehen Teile des Codes löscht, weil er nicht weiß, worum es sich dabei handelt. Aber auf Webseiten von richtigen Entwicklern (im Gegensatz zu Privatleuten, die manchmal nicht ganz wissen, was sie tun) haben diese Kommentare nichts zu suchen. Hinzu kommt noch, dass der sinnfreie JavaScript-Kommentar „DO NOT CHANGE“ ebenfalls gelöscht werden sollte.

Welche Meinung habt ihr zu HTML-Kommentaren? Braucht man sie? Welche Einsatzgebiete habt ihr dafür?

Dieser Beitrag wurde in   HTML veröffentlicht und verschlagwortet mit   .
Fügen Sie ein Lesezeichen für den   permanenten Link hinzu.

Jan hat 152 Beiträge geschrieben

25 Kommentare zu “HTML-Kommentare: Weg damit!

  1. Phate sagt:

    Hi,
    HTML-Kommentare würde ich jetzt nicht explizit mit PHP umschließen, nur damit sie unsichtbar werden. Ich löse das etwas anders und mit weniger Aufwand.

    Ich habe für meine Webprojekte einen Output-Handler. Dieser macht neben dem obligatorischen Komprimieren auch u.a. so Sachen wie HTML-Kommentare im output-Buffer löschen.

    Gruß

  2. GhostGambler sagt:

    Also der zweite Nachteil ist aber dürftig…
    Wenn sich eine Website nur durch das Verändern von ein bisschen HTML-Code schon kompromittieren lässt, dann ist das geringste Problem zu dem Zeitpunkt wohl der HTML-Kommentar.

  3. Andreas sagt:

    Ab und zu sind HTML-Kommentare zumindest bei der Entwicklung sinnvoll, weil man mit ihnen im Quelltext die Stellen markieren kann, wo bestimmte Inhaltselemente beginnen oder enden. Und das will man dann eben im Quelltext der gerenderten Seite sehen und nicht nur im PHP-Quelltext. Allerdings wäre wie oben erläutert hochgradig unklug, die Kommentare dauerhaft im Quelltext zu belassen, das sie nur bei der Entwicklung gebraucht werden.
    Wenn man nun aber eh schon PHP nutzt, wäre es doch weitaus sinnvoller, eine kleine Funktion zu basteln oder über eine Boolean-Variable bei jedem HTML-Kommentar abzufragen, ob die HTML-Kommentare angezeigt werden sollen oder nicht. So kann man dann als Entwickler kurzzeitig die HTML-Kommentare im Quelltext der Seite einblenden lassen wenn man sie mal anschauen will beim (weiter)entwickeln der Seite und ansonsten blendet man sie über besagte Variable komplett aus.
    Hier ein Code-Beispiel (ich hoffe das wird jetzt hier in der Kommentarfunktion einigermaßen gescheit dargestellt):

    <?php
    echo ((DISPLAY_HTML_COMMENTS == true) ? "<!– begin of left column –>“ : „“);
    ?>

    Könnte man evtl. noch bißchen kompakter machen, ich wollte es aber auch nicht zu unverständlich machen für dieses Beispiel.

  4. Andreas sagt:

    Hmm in meinem obigen Kommentar wurde leider ein Teil des Quelltextes von der WordPress-Blogsoftware rausgefiltert. Da stand noch ein HTML-Kommentar zwischen den ersten beiden Gänsefüßchen der if-Abfrage.

  5. Sören sagt:

    Da gerade bei großen Projekten auf Templatesysteme zurückgegriffen werden sollte, stellt sich die HTML-Kommentar-Frage eigentlich nur höchst selten, da Templatesysteme (wie Smarty) eigene Kommentarsysteme benutzen, welche dann nicht ausgegeben werden (quasi wie PHP Kommentare).

  6. Reto sagt:

    Dieser Beitrag hat mich doch etwas stutzig gemacht.

    Zum einen lese ich im Title „[…]Komentare: Weg damit“. Mein erster Gedanke war: „Hä, was? Keine Kommentare?“. Wo doch jeder *richtiger* Entwickler weiss, wie wichtig Kommentare sind.

    Dann sehe ich HTML und PHP output gemischt in einem Skript. Sorry wen ich das nun so sage, aber mir als *richtiger* Entwickler graut es von solchen Konstrukten. Und dann noch mit PHP HTML-Kommentare ausblenden. Mir wird ganz schwummerig im Magen. Die Wartbarkeit des Skriptes geht hierbei doch ziemlich Bach ab.

    Wobei ich natürlich recht geben muss, dass das Beispiel von eBay sehr unprofessionell ist und als „Schlechtes Beispiel“ sehr gut herhält.

    Zum Beitrag: Kommentare sind immer und überall sehr wichtig. Ob sie nun in einer fertigen Page enthalten sein sollen oder nicht lässt sich streiten. Aber auf jeden Fall, wie im Beitrag angemerkt, gehören auskommentierte Funktionen definitiv nicht hinein.

    Ich rege an, lieber den HTML und PHP Teil sauber trennen (MVC) und dann den Kommentarteil mit PHP entfernt. Ob nun bei jedem Aufruf oder dann gekürzt abspeichern (z.B. analog dem Minify von JavaScript) , sei jedem selbst überlassen.

  7. Jan sagt:

    @Andreas: Habe den Deinen Kommentar editiert.
    @All: Richtig, eine saubere Trennung von HTML und PHP hilft ebenfalls, aber einersets ist dies bei vielen Bestandsprojekten leider nicht der Fall und andererseits hilft es genauso wenig, wenn ein unbedarfter Entwickler (wahlweise auch Praktikant) den Auftrag erhält ein bestimmtes HTML-Element zu entfernen. Da dieser aus der Vergangenheit weiß, dass man vielleicht schon bald das gleiche Element wieder einbauen darf, kommentiert man es nur aus. Und schon ist es passiert.

    Hauptsächlich sind davon meiner Meinung nach eh Projekte betroffen, bei denen neben vielen Entwicklern auch einige Nicht-Entwickler mitarbeiten.

  8. Björn sagt:

    Ich bin der Meinung, daß ein paar HTML-Kommentare nicht wehtun, insb. so etwas wie „eBay RelevanceAd“ kann sinnvoll sein – wer weiß sonst noch nach ein paar Jahren was es mit dem Schnipsel auf sich hat?

    Die dann bei der Recherche gesparte Zeit kann man dann ja in wirklich sinnvolle Performanceverbesserungen stecken.

    Ach so: Mal in den Code der eigenen Website geschaut? Da gibt es auch auskommentierte Formulare etc. 😉

  9. Jan sagt:

    @Björn: Die Performance dieses Blogs ist mir eigentlich herzlich egal. Deshalb wirst Du hier jede Menge HTML-Kommentare und andere Dinge finden, die nicht wirklich performant sind.
    Und spätestens an der Script-URL sollte man auch ohen Rechercheaufwand erkennen, worum es sich handelt: http://ebayrelevancead.webmasterplan.com/js/show_ads.js

    Übrigens ging es in diesem beitrag auch nicht um das Allheilmittel zur Lösung von Performance-Problemen. Es ist lediglich ein oft vergessener Ansatz, wie man den zum Client zu schickenden Code reduzieren kann.

  10. Ralf sagt:

    Kommentare sind immer dann wichtig, wenn man von anderen lernen will. Ich denke sehr viele Entwickler haben viel dadurch gelernt indem sie sich den einen oder anderen Trick bei jemand anderes abgeschaut haben. Deswegen kann es durchaus sinnvoll sein wenn man HTML-Kommentare dennoch drin lässt. Einem selber hilft es u.U. wenig bis gar nichts, anderen kann es jedoch durchaus eine Hilfestellung sein.
    Man kann sich natürlich auch auf den Standpunkt stellen „Alles meins!“ und anderen es überlassen den Quelltext in Kleinarbeit selber zu analysieren.
    Sicherlich gibt es gerade für den FireFox viele Plugins die die Struktur einer Webseite übersichtlich darstellen. Dennoch finde ich es eine nette Geste anderen ggf. einen kleinen erklärenden Kommentar zu hinterlassen. Das gleiche trifft übrigens auf Stylesheets zu.

    Man kann in HTML-Kommentaren aber auch kleine Botschaften hinterlassen. Copyright, Liebeserklärung oder einfach eine Nachricht an die Welt. Wer jetzt meint dies sei ja doch wenig professionell, der sollte sich vielleicht noch einmal das Thema Eastereggs zu Gemüte führen. Bei aller Performance und aller Professionalität sollte der Spaß an der Arbeit nicht auf der Strecke bleiben.

    Google nutzt z.B. HTML-Kommentare um eine Webseite zu validieren (Google Webmastertools). Man kann HTML-Kommentare also auch dazu nutzen um relativ einfach und schnell heraus zu finden ob bestimmte Scripts (Google Analytics, Ebay-Werbedingens, usw.) vorhanden sind. Mir fällt jetzt kein anderes konkretes Beispiel ein als das von Google zum Validieren der Webseite. Aber es wird vielleicht mal den einen oder anderen Fall geben wo man eine Webseite maschinell auf das Vorhandensein bestimmter Code-Abschnitte hin überprüfen möchte. In solch einen Fall können HTML-Kommentare also sinnvoll eingesetzt werden.

    Mit HTML-Kommentare ist es wie mit allen Kommentaren: Sie haben ihre Berechtigung wenn man sie sinnvoll einsetzt. Klar sind Kommentare wie „Do not change“, „DO NOT DELETE“ oder „Don’t pick in your nose“ weder sinnvoll noch nützlich. HTML-Kommentare deswegen jedoch gleich generell zu verbannen finde ich arg übertrieben.

    Ach ja, eins fällt mir noch ein: Man kann natürlich eine Art „digitales Wasserzeichen“ mit HTML-Kommentaren erstellen. Die meisten die sich HTML-Code einfach zusammenklauen (egal ob manuell oder maschinell), sind zu faul (& zu dämlich) HTML-Kommentare zu entfernen. Mit ein paar HTML-Kommentaren an der richtigen Stelle kann man so den einen oder anderen Content-Dieb auf die Schliche kommen.

  11. Björn 2 sagt:

    Abgesehen davon heutzutage CMS benutzt das Templates nutzt, fallen diese Kommentare eh weg. Da bei so Template-Engines eigene Kommentar-Funktionen bietet. Somit bleibt der HTML-Code frei von allem 🙂

  12. Fritriac sagt:

    Ich geh‘ mal davon aus, das jeder Webdesigner sowieso eine Entwickler- und eine Produktivversion der Seiten hat, oder? Ich mach’s zumindest so, daß vor einem Launch die Kommentare rausgeschmissen werden. Es kostet zwar etwas mehr Mühe und Aufmerksamkeit, die Versionen abzulegen, aber so brauche ich später bei einem ähnlichen Projekt nicht zu sagen: „Hä, was hab‘ ich denn DA gemacht“… 🙂

    Kommentare:

    Für mich: ja
    Für die Kundenseite: nein

  13. jule_ sagt:

    Ich verstecke HTML Kommentare in Produktivsystemen üblicherweise auch via PHP (ähnlich wie Kommentar #3 von Andreas).

    Einzige Ausnahme: Wenn leere HTML Elemente im Code vorkommen, z.B. ein <li></li>, dann füge ich einen Kommentar ein, damit die HTML (Tidy) Validierung keine Warning anzeigt: <li><!– –></li>

  14. Fritriac sagt:

    @jule_

    Die Kommentare stecken aber dann doch immer noch im Source, den der Server abzuarbeiten hat. Warum nicht ganz ‚raus damit? Ich neige außerdem auch dazu, kurz voe der Produktivversion noch die Variablennamen etc. des serverseitigen Codes zu verkürzen, egal ob in PHP oder ASP (womit ich weit mehr gearbeitet habe).

    „objConnSQL“ wird dann schon mal zu „ocs“ etc., wenn jedes Zeichen zählen soll…

  15. jule_ sagt:

    Für mich persönlich ist lesbarer (und damit wartbarer) Code wichtiger als (dieser) Performancetweak(s).

    Liegt vielleicht auch daran, dass ich entwicklerseitig noch nie mit wirklich großen Projekten, in denen jede Millisekunde Parsing-Time zählt, gearbeitet habe.

    @Jan: Meinen zweiten Beitrag kann man nun wohl entfernen.

  16. Ralf sagt:

    Hat mal jemand ausgetestet wie viel es an Performance bringt die Kommentare zu entfernen bzw. wie viele Byte an Traffic eingespart werden? Wäre sicherlich auch ganz interessant mal zu testen wie viel zeit es kostet die Kommentare per PHP zu verstecken.

    Wenn die Kommentare einem derart „peinlich“ sind das sie vor Veröffentlichung entfernt werden müssen, dann sollte man sich ggf. überlegen sie erst gar nicht einzufügen. Falls man gar nicht darauf verzichten kann, kann man die Kommentare ja auch in einer zusätzlichen Datei notieren.

  17. Johannes sagt:

    Hui, grad per Google auf dieser Seite gelandet – und wenn eine Seite sich PHPPerformance nennt und der Seitenbetreiber meint „Die Performance dieses Blogs ist mir eigentlich herzlich egal“ – dann bin ich auch gleich wieder weg und ignoriere ganz definitiv die „wertvollen“ Tipps die hier gegeben wurden.

  18. Jan sagt:

    @Johannes: Dies hier ist ein Blog mit ein paar Hundert Besuchern am Tag, der dazu null komma nix an Einnahmen abwirft. Denkst Du, da würde eine Performance-Optimierung sinnvoll sein?

    Die meisten Tipps in diesem Blog sind für große Seiten, wo es um jede Hundertstel-Sekunde bzw. jedes Byte geht, das eingespart werden kann.

  19. Johannes sagt:

    Das mag ja schön und gut sein, aber erstens finde ich etwas seltsam dass man mit dem doch recht handfesten Statement „Diese HTML-Kommentare sind völlig unnötig und allein darin begründet, dass ein unbedarfter Webmaster aus Versehen Teile des Codes löscht, weil er nicht weiß, worum es sich dabei handelt. Aber auf Webseiten von richtigen Entwicklern […] haben diese Kommentare nichts zu suchen“ um sich wirft und dann in der Umsetzung und Einstellung doch was ganz anderes von sich gibt.
    Was soll ich als Besucher dieser Seite, der wirklich an PHP-Performance interessiert ist, davon denken? Du brauchst das für deine Seite nicht, weil du kein „richtiger Entwickler“ im Sinne deines obigen Zitat bist? Dann brauch ich wohl auf deinen Rat nicht geben. Oder du empfielst Dinge (aus SEO-Gründen o.ä.?) die dir in der Praxis ziemlich egal sind? Dann such ich mir auch lieber meinen eigenen Weg. Schlussendlich schießt du dir mit obigem Zitat auch noch selbst ins Bein, indem du behauptest, HTML-Kommentare seien nur etwas für „unbedarfte Webmaster“, die nicht wissen was sie tun – Diese Post-Seite hier hat übrigens 46 HTML-Kommentare.

    Ich will gar nicht darauf hinaus dass du deine HTML-Kommentare löschen sollst, bevor du so einen Eintrag schreibst – ich bin was die Kommentare angeht nämlich sowieso anderer Meinung, da sie zumindest im Open Source- und Communitybereich (Stichwort WordPress-Templates – da kommen auch die meisten deiner HTML-Kommentare her) durchaus zur Verständlichkeit der Codestruktur beitragen. Was mich aber extrem stört ist vor allem, dass du aus Performance-Gründen (!!) empfielst, HTML-Kommentare durch verschachteln von mehreren PHP-Tags usw. („Sinnvoller Ersatz“) zu ersetzen. Dies beschert dem PHP-Parser nicht nur lustiges Hin-und herswitchen zwischen HTML und PHP-Modus, sondern ist auch die totale Vermatschung von Struktur und Inhalt, total unleserlich und Syntaxfehleranfällig.

    Bitte nicht zu persönlich nehmen, das ist nur so meine sachliche Meinung bzw mein Eindruck als Besucher dieser Seite. BTW habe ich durchaus einige andere Artikel hier gelesen und interessantes dabei erfahren.

  20. Johannes sagt:

    BTW, ich sehe gerade dass du ein auf Wolfgang Bartelme’s „Fresh“ Theme basiertes Theme verwendest. Kannst ihn ja mal fragen ob er sich eigentlich als professionell bezeichnen würde. ^^

  21. Fritriac sagt:

    Ey, Johannes: Du hast ja bei einigem recht, aber ich bin zur Zeit auch Sch*sse drauf und … 😉

    Professionalität hat auch oft etwas mit Pragmatismus zu tun. Sind wir doch mal alle ehrlich: 100%iges gibt’s nicht, wie auch immer.

    /Cool down!

  22. alopix sagt:

    Ich nutze HTML-Kommentare eigentlich nie. Weiß nicht warum, aber ich kann mir nicht denken, wieso ich HTML kommentieren muss. Da sieht man den Aufbau doch eh super – vor allem wenn man mit IDs arbeitet, die man dann eh meist für CSS braucht.
    In anderen Programmiersprache unabdingbar, sind HTML-Kommentare bei mir wirklich nur dazu da um mal beim Entwickeln ein Designteil auszublenden.

  23. uli sagt:

    Wenn die Html Kommentare wenigstens Syntaktisch korrekt eingebaut würden.

    Meist findet man so etwas <!—->

    oder so

    Damit ist dann in den meisten Editoren der nachfolgen Code grau und ohne Syntax Highlight.

    uli

Eine Antwort schreiben

Ihre E-Mail-Adresse wird nicht veröffentlicht. Benötigte Felder sind markiert mit *

You may use these HTML tags and attributes: <a href=""> <blockquote cite=""> <pre lang=""> <b> <strong> <i> <em>