Nach meiner Erfahrung lautet das Muster wie folgt:
- System funktioniert oft jahrelang
- Ein Fehler wird gemeldet
- Der Entwickler untersucht den Fehler und findet ein Stück Code, das völlig fehlerhaft zu sein scheint, und erklärt, dass es "niemals hätte funktionieren können".
- Der Fehler wird behoben und die Legende des Codes, der nie funktioniert haben könnte (aber jahrelang funktioniert hat), wächst
Lassen Sie uns hier logisch sein. Code, der niemals hätte funktionieren können ... hätte niemals funktionieren können . Wenn es tut Arbeit dann ist die Aussage falsch.
Also werde ich sagen, dass ein Fehler, der genau so ist, wie er beschrieben wurde (wenn man den fehlerhaften Code beachtet, funktioniert er nicht mehr), Unsinn ist.
In Wirklichkeit ist das, was passiert ist, eines von zwei Dingen:
1) Der Entwickler hat den Code nicht vollständig verstanden . In diesem Fall ist der Code normalerweise ein Durcheinander, und irgendwo in ihm besteht eine große, aber nicht offensichtliche Empfindlichkeit gegenüber externen Bedingungen (z. B. einer bestimmten Betriebssystemversion oder -konfiguration, die die Funktionsweise einiger Funktionen auf eine geringfügige, aber wichtige Weise regelt). Diese externe Bedingung wird geändert (z. B. durch ein Server-Upgrade oder eine Änderung, von der angenommen wird, dass sie nichts damit zu tun hat), wodurch der Code beschädigt wird.
Der Entwickler sieht sich dann den Code an und erklärt, da er den historischen Kontext nicht versteht oder nicht die Zeit hat, alle möglichen Abhängigkeiten und Szenarien nachzuvollziehen, dass er niemals hätte funktionieren können, und schreibt ihn neu.
In dieser Situation muss man verstehen, dass die Vorstellung, dass "es niemals hätte funktionieren können", nachweislich falsch ist (weil es so war).
Das heißt nicht, dass das Umschreiben eine schlechte Sache ist - es ist oft nicht so, während es schön ist, genau zu wissen, was falsch war. Oft ist das zeitaufwendig, und das Umschreiben des Codeabschnitts ist oft schneller und ermöglicht es Ihnen, sicherzugehen, dass Sie Dinge repariert haben.
2) Eigentlich hat es nie funktioniert, nur hat es noch niemand bemerkt . Dies ist insbesondere bei großen Systemen überraschend häufig. In diesem Fall beginnt und beginnt jemand Neues, die Dinge auf eine Weise zu betrachten, die noch niemand zuvor getan hat, oder ein Geschäftsprozess ändert sich und bringt einen zuvor geringfügigen Randfall in den Hauptprozess wird gefunden und gemeldet.
Der Entwickler sieht es sich an und erklärt, "es hätte nie funktionieren können", aber die Benutzer sagen "Unsinn, wir benutzen es schon seit Jahren" und sie haben irgendwie recht, aber etwas, das sie für irrelevant halten (und das sie normalerweise bis zum nicht erwähnen Entwickler findet den genauen Zustand , an welchem Punkt sie gehen „oh ja, wir tun das jetzt und haben nicht vor“) geändert hat.
Hier hat der Entwickler Recht - es hätte nie funktionieren können und es hat nie funktioniert.
Aber in jedem Fall ist eines von zwei Dingen wahr:
- Die Behauptung "es hätte nie funktionieren können" ist wahr und es hat nie funktioniert - die Leute dachten nur, es würde funktionieren
- Es hat funktioniert und die Aussage "es hätte nie funktionieren können" ist falsch und beruht auf einem (normalerweise vernünftigen) Mangel an Verständnis für den Code und seine Abhängigkeiten