Konsistenz

Konsistenz im weiteren Sinn bezieht sich auf den logischen, hermeneutischen, funktionalen oder ästhetischen Bestand eines Gegenstandes (z. B. eines Textes, eines Begriffs, einer Methode oder Technik, eines Werkzeugs oder eines Kunstwerks), der in sich stimmig ist, Sinn ergibt und keine inneren Widersprüche oder Spannungen aufweist, die seine Einheit gefährden. (Quelle Wikipedia)

Im Bezug auf Software bedeutet das, dass die Software sich an einer Stelle in einer bestimmten Art und Weise und an anderer (ähnlicher) Stelle analog/ähnlich dazu verhält – eben konsistent.

Wie wichtig Konsistenz ist, zeigt mal wieder folgendes Beispiel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
  <head>
    <title>Meine Test-Seite</title>
    <script type="text/javascript" src="js/jquery-1.2.6.pack.js"/>
    <script type="text/javascript">
    <!--
      $(document).ready(function() {
        alert("Hallo Welt");
      });
    // -->
    </script>
  </head>
  <body>
  </body>
</html>

Diese simple HTML-Seite soll per JavaScript/jQuery “Hallo Welt” ausgeben. Dummerweise tut sie das aber nicht trotz ihrer Validität.

Nach stundenlanger Suche bin ich dann auf den Fehler gestoßen. Man darf den <script>-Tag (Zeile 4) nicht als Einzel-Tag schreiben, sondern muss ihn mit schließendem Tag schreiben. Der Quellcode sieht dann also so aus und funktioniert damit:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
  <head>
    <title>Meine Test-Seite</title>
    <script type="text/javascript" src="js/jquery-1.2.6.pack.js"></script>
    <script type="text/javascript">
    <!--
      $(document).ready(function() {
        alert("Hallo Welt");
      });
    // -->
    </script>
  </head>
  <body>
  </body>
</html>

Dieses Verhalten (das im Firefox 3.5 und im Internet Explorer 8, aber nicht im Opera 9 auftritt) ist inkonsistent, denn überall sonst gilt (nur halt bei <script> nicht):

<tag></tag> = <tag/>

Und es ist frustrierend nach so einem Fehler zu suchen, zumal er nirgendwo als Fehler angezeigt wird.

CSS clearfix with LESS

The idea of CSS is to separate design from structure (which is represented by HTML). So much for the theory. In pratice, however, this doesn’t always work – or at least the solution isn’t very obvious.

One of the most prominent examples is the so called clearfix. It solves the floating elements problem (described below) but usually requires you to change your HTML code.

Fortunately, with LESS (a better CSS) this is no longer necessary.

Read more →