Heim > Artikel > Backend-Entwicklung > 12 wichtige Schritte zur Behebung von Fehlern
Boss: Wie lange wird es dauern, diesen Fehler zu beheben?
Unerfahrener Programmierer: Geben Sie mir eine Stunde? Höchstens zwei Stunden? Ich kann es sofort erledigen!
Erfahrener Programmierer: Sagen wir es so: Wie lange dauert es, einen Fisch zu fangen? !
Wie lange es dauern wird, den Fehler zu beheben, ist im Voraus schwer zu sagen, insbesondere wenn Sie mit dem Code noch nicht vertraut sind, wird die Situation noch verwirrender sein. In dem Buch „The Art of Agile“ weist James Shore deutlich darauf hin, dass man, wenn man ein Problem lösen will, zunächst wissen muss, um welches Problem es sich handelt. Der Grund, warum wir die Zeit nicht genau abschätzen können, liegt darin, dass wir nicht wissen, wie lange es dauern wird, den Kernpunkt zu finden. Nur wenn wir dies wissen, können wir die Zeit, die zur Behebung des Fehlers benötigt wird, vernünftig abschätzen. Allerdings befürchte ich, dass die Taglilien zu diesem Zeitpunkt bereits kalt sind. Steve McConnell sagte einmal:
„Das Problem finden – das Problem verstehen – das ist 90 % der Aufgabe des Programmierers.“
Bei vielen Bugs muss nur eine bestimmte Codezeile geändert werden. Aber was viel Zeit in Anspruch nimmt, ist, dass wir später herausfinden müssen, was richtig ist – genau wie beim Angeln müssen wir wissen, wo wir den Köder hinlegen müssen, wann der Fisch leicht zu ködern ist usw. Man sagt, dass es vier Arten von Fehlern gibt: Der erste Typ ist leicht zu finden und leicht zu beheben, der zweite Typ ist schwer zu finden und leicht zu beheben, der dritte Typ ist leicht zu finden und schwer zu beheben und der vierte Typ Typ ist schwer zu finden und schwer zu reparieren. Das Tragischste ist der letzte Typ, der nicht nur „suchend und suchend“ ist, sondern auch trostlos und trostlos, selbst wenn er nach all der harten Arbeit schließlich den Stein durchbricht, kann er dort nur unfreiwillig zerkratzt werden, und hilflos seufzt: „Der Weg ist lang und lang.“ Man kann sagen, dass die Suche nach Fehlern, sofern es sich nicht um frisch veröffentlichten Code handelt, wie ein Blinder ist, der nach einem Elefanten sucht – man ist verwirrt und weiß nicht, zu welchem Fehlertyp er gehört.
Fehler finden und beheben
Wissen Sie, was „Fehler finden und beheben“ bedeutet? Genau, Debuggen! Ständiges Debuggen, unzähliges Debuggen! Durch umfangreiche Arbeit hat Paul Butcher die folgenden strukturierten Schritte zusammengefasst:
1. Klären Sie den Zweck. Überprüfen Sie den Ausnahmebericht sorgfältig, um festzustellen, ob es sich um einen Fehler handelt, finden Sie verschiedene nützliche Informationen, entdecken Sie den Kern des Problems und reproduzieren Sie es. Überprüfen Sie den Bericht erneut auf Duplikate. Wenn es zu Duplikaten kommt, prüfen Sie, wie die beteiligten Personen damit umgegangen sind.
2. Vorbereitung – Finden Sie den richtigen Code heraus und nutzen Sie die Eliminierung, um den Arbeitsbereich aufzuräumen.
3. Passen Sie die Testumgebung an. Dieser Vorgang kann übersprungen werden, wenn der Kunde an der Computerkonfiguration arbeitet.
4. Klären Sie den Zweck des Codes und stellen Sie sicher, dass mit den vorhandenen Testtools alles ordnungsgemäß funktioniert.
5. Okay, jetzt können Sie angeln gehen – den Fehler reproduzieren und diagnostizieren. Wenn Sie es nicht reproduzieren können, können Sie nicht nachweisen, dass Sie die Reparaturarbeiten durchgeführt haben.
6. Schreiben Sie Testfälle oder erkennen Sie Fehler anhand vorgefertigter Testfälle.
7. Rufen Sie den Reparaturmodus auf – stellen Sie sicher, dass keine anderen Teile davon betroffen sind. Bevor Sie jedoch mit der Behebung des Problems beginnen, möchten Sie möglicherweise das Refactoring durchführen, denn nur dann können Sie ohne Angst mit dem Code herumspielen. Und Post-Regressionstests können auch sicherstellen, dass Sie keine neuen Fehler hinzufügen.
8. Organisieren Sie den Code. Machen Sie Ihren Code durch schrittweises Refactoring verständlicher und sicherer.
9. Finden Sie jemanden, der es überprüft. Die Behörden werden verwirrt sein und die Zuschauer werden verwirrt sein.
10. Überprüfen Sie diesen Reparaturvorgang noch einmal.
11. Beginnen Sie nicht mit der Hauptzeile, um zu prüfen, ob sich diese Fehler auf andere Zweige auswirken. Führen Sie diese Änderungen zusammen, behandeln Sie Unterschiede im Code, überprüfen Sie alle Überprüfungen und Tests usw.
12. Denken Sie nach. Überlegen Sie genau, was schief gelaufen ist und warum? Warum funktioniert Ihr Fix? Wo sonst würde diese Art von Fehler auftreten? In dem Buch „The Pragmatic Programmer“ wiesen Andy Hunt und Dave Thomas auch darauf hin, dass „wenn ein Fehler viel Zeit kostet, dann müssen Sie herausfinden, warum.“ Darüber hinaus müssen wir auch darüber nachdenken, wie wir aus Erfahrungen und Lektionen lernen können, damit wir in Zukunft nicht mehr über ähnliche Probleme stolpern. Und gibt es irgendetwas, das an den von uns verwendeten Methoden und Werkzeugen verbessert werden kann? und die Auswirkungen und Schwere dieser Fehler.
Was braucht mehr Zeit, den Fehler zu finden oder ihn zu beheben?
Vielleicht ist die Zeit, die erforderlich ist, um eine Testumgebung einzurichten, das Problem zu reproduzieren und den Fehler zu testen, weitaus länger als die Zeit, den Fehler zu finden und zu beheben. Bei einer kleinen Anzahl offensichtlicher Fehler ist es jedoch einfach, sie zu finden – ihre Behebung ist jedoch möglicherweise nicht ideal.
In dem Buch „Making Software“ gibt es ein Kapitel, das hauptsächlich „die Quellen der meisten Software-Schwachstellen“ bespricht. Dewayne Perry analysiert, dass das Entdecken von Fehlern (einschließlich des Verstehens und Reproduzierens von Fehlern) wichtiger ist als das Reparieren sie. Es dauert länger. Studien haben gezeigt, dass die meisten Fehler (fast 3/4) sowohl leicht zu finden als auch leicht zu beheben sind: 5 Tage oder weniger (dies basiert auf großen Echtzeitsystemen durch Hochleistungs-SDLC, umfangreiche Überprüfung und Tests). Aber es gibt auch sehr eklige Fehler. Auch wenn man sie leicht erkennen kann, muss man hart daran arbeiten, sie zu beheben.
Erkennung/Reparatur Reparaturzeit5 Tage
Kann das Problem reproduzieren 72,5 % 18,4 %
Schwer reproduzieren oder jetzt überhaupt nicht reproduzieren 5,9 % 3,2 %
Wenn Sie also darauf wetten, dass Sie einen Fehler schnell beheben können, liegen Sie in den meisten Fällen richtig. Aber wenn Sie die Wette verlieren, bedeutet das, dass Sie in großen Schwierigkeiten stecken.
Also, wenn der Chef das nächste Mal fragt, wann der Fehler behoben wird, antworten Sie nicht dumm „das wird bald erledigt sein“.