Sven Rautenberg: Variablennamen - Eindeutigkeit/Aussagekraft

Beitrag lesen

Moin!

mir geht es vorallendingen um Nachvollziehbarkeit. (auch noch 6 Monate später ;))

Was die anderen schon geschrieben haben: Kommentare schreiben!

Ich gehe beim Programmieren häufig so vor, dass ich ein komplexeres Problemchen erstmal ausschließlich in Kommentaren "löse", also im Prinzip in noch nicht weiter ausgeführtem Pseudocode. Ich kommentiere also als ersten Schritt, was ich tun will. Beispiel (jetzt spontan ausgedacht)

if ( // Serverstand älter als last-modified )
{
  // 304-Header ausgeben
}
else
{
  // Dokument neu generieren
}

Dieses Gerüst ist der grobe Programmablauf. Natürlich wird die eine oder andere Aufgabe beim Ausprogrammieren komplexer. Aber der Kommentar ist schon da und sagt, was gemacht wird. Außerdem habe ich mich dann gedanklich schon mit dem _gesamten_ Problem beschäftigt, widme mich also in der Folge nur noch Unterproblemen, die als Teilaufgabe eingefüllt werden müssen.

Im Beispiel (durchaus der Praxis entlehnt) ist "Dokument neu generieren" komplexer, "304-Header ausgeben" ganz simpel, und "Serverstand älter als last-modified" hängt von den Umständen ab. Ich belaste mich aber noch nicht mit Detailkrams, z.B. wie ich denn das Datum des Serverstandes feststelle (dazu gehört, welche Daten da denn alles mit reinfliessen müssen), sondern produziere erstmal die grobe Linie.

Und als Ergebnis dieser Überlegung kommt dann z.B. sowas raus, wie es auf der Homepage meiner Firma realisiert wurde:

---schnipp---

Wenn der Browser ein Conditional-GET gesendet hat und die Seite seitdem nicht geändert wurde

if (
     isset($_SERVER["HTTP_IF_MODIFIED_SINCE"])
     &&
     (
       (
         strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) >= filemtime($_SERVER['DOCUMENT_ROOT'].$_SERVER["SCRIPT_NAME"])
       )
       ||
       (
         strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) >= filemtime($_SERVER['DOCUMENT_ROOT']."index.php")
       )
       ||
       (
         strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]) >= filemtime($_SERVER['DOCUMENT_ROOT']."news/newsteaser.html")
       )

)
   )
{
  # Status 304 ausgeben und Script beenden
  {
    header("HTTP/1.0 304 Not Modified");
    exit;
  }
}

header("Last-Modified: " . gmdate("D, d M Y H:i:s", filemtime($_SERVER['DOCUMENT_ROOT'].$urlstring)) . " GMT");
header("Expires: " . gmdate("D, d M Y H:i:s", (time()+86400) ) . " GMT"); // Expires: 1 Tag von heute an.
---schnapp---

- Sven Rautenberg

--
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)