Geerbter Code ist oft mit Copy-und-Paste-Stellen durchsetzt. Denn kurzfristig kommt man schneller ans Ziel, wenn man für einen Sachverhalt, den man schon “durchgekaut” hat und der wieder abgearbeitet werden muss, bestehenden Code kopiert. Diesen Quelltext so aufzubereiten, dass er unkompliziert wiederverwendet werden kann, dauert ungleich länger – es zahlt sich zwar “nach hinten raus” aus, aber das interessiert den Chef oft nicht.
Je besser man den Quelltext also kennt, desto öfter stößt man auf Abschnitte, die man an anderen Stellen auch schon gesehen hat. Eins der Ziele beim Umschreiben solchen Codes ist, die Wiederholungen zu entfernen, den oft kopierten Abschnitt nur an einer Stelle vorzuhalten – die Arbeit nachzuziehen, die der erste Schreiber schon hätte erledigen sollen.
Es gibt kleine Helferlein, die solche Stellen entdecken. Und wer die nicht nutzen möchte oder kann, der bedient sich des dateiübergreifenden Suchens, einer Standard-Funktion in modernen IDEs. Unabdingbare Voraussetzung für den Erfolg dieser Methode ist, dass derselbe Sachverhalt mit demselben – oder wengistens sehr ähnlichem – Code abgearbeitet wird. Welcher Teufel hat meinen Vorgänger geritten, den selben Sachverhalt in zwei komplett unterschiedlichen Formulierungen abzubilden?!? Wahrscheinlich waren es mehrere. Vorgänger. Oder Teufel. Oder beides.
Was mich beruhigt: Die Fähigkeit zu erkennen, dass zwei unterschiedliche Quelltexte denselben Sachverhalt abbilden, kann nicht mechanisiert werden, sie ist nur dem Menschen eigen und erinnert damit an einen wesentlichen Unterschied zwischen Menschen und Maschinen.