Das Skript lief durch. Keine Fehlermeldung, kein Abbruch, Rückgabewert null. Es hatte nur in drei von neun Fällen nichts geändert.

Der stille Fehler

Eine Textersetzung ist ihrem Wesen nach nachsichtig: Sie sucht, und wenn sie nichts findet, ersetzt sie nichts. Das ist kein Fehlerzustand – aus Sicht des Werkzeugs hat es genau das getan, worum es gebeten wurde.

Bei einer einzelnen Datei fällt das auf, weil man das Ergebnis ansieht. Bei einem Patch über mehrere Installationen mit mehreren Ersetzungen je Installation sieht niemand jedes Ergebnis an. Was man ansieht, ist die Ausgabe – und die ist leer, weil nichts schiefging.

Warum es besonders teuer ist

Der Fehler äußert sich zeitversetzt und an anderer Stelle: Der behobene Fehler tritt bei einer Installation weiterhin auf. Die naheliegende Vermutung ist dann, dass der Patch falsch war – und man sucht in der Behebung statt in ihrer Verteilung.

Die Zusicherung

Vor jeder Ersetzung eine Prüfung: Kommt das Suchmuster in dieser Datei überhaupt vor? Wenn nicht, Abbruch mit Nennung von Datei und Muster. Der Aufwand ist eine Zeile je Ersetzung.

Ohne Zusicherung
  • Läuft immer durch
  • Teilweise angewendet, ohne Hinweis
  • Fehler zeigt sich später und anderswo
  • Die Suche beginnt bei der falschen Vermutung
Mit Zusicherung
  • Bricht bei der ersten Abweichung ab
  • Nennt Datei und Muster
  • Zustand ist eindeutig: vollständig oder gestoppt
  • Der Hinweis kommt vor dem Schaden

Warum Abbruch besser ist als Weiterlaufen

Der naheliegende Einwand: Ein Abbruch mitten im Patch hinterlässt einen halb geänderten Stand. Richtig – aber einen bekannten halb geänderten Stand, mit einer Meldung, die sagt, wo er aufhörte.

Die Alternative ist ein halb geänderter Stand, den man für vollständig hält. Von den beiden ist der zweite deutlich schlechter, weil er nicht als Zustand erkennbar ist, den man beheben müsste.

Zwei Erweiterungen, die sich lohnen

  1. Trefferzahl prüfen, nicht nur Vorhandensein

    Bei Mustern mit Platzhaltern ist „mindestens einmal" zu wenig. Erwartet wird eine bestimmte Anzahl; alles andere ist ein Abbruchgrund.

  2. Vorher trocken laufen lassen

    Ein Durchlauf, der nur ausgibt, was er ändern würde. Bei vierzig Ersetzungen über neun Installationen ist das die einzige Möglichkeit, den Umfang vorher zu sehen – und der Umfang überrascht öfter, als man erwartet.

Ein Werkzeug, das nachsichtig ist, ist beim Bearbeiten hilfreich und beim Verteilen gefährlich. Beim Verteilen will man Strenge: lieber zu früh anhalten als zu spät auffallen.