Es gibt kein allgemeines Rezept, aber einige Faustregeln ( vorausgesetzt, eine statisch typisierte Sprache, aber das sollte eigentlich keine Rolle spielen):
1) Schauen Sie sich die Methodensignatur an. Es sagt Ihnen , was geht in und hoffentlich kommt heraus . Aus dem Gesamtzustand dieses Gottes -Klasse, nehme ich dies ein erster seinen Schmerzpunkt . Ich nehme an, dass mehr als ein Parameter verwendet wird.
2) Verwenden Sie die Suchfunktion Ihres Editors / EDI, um Exit-Points zu ermitteln (normalerweise wird eine return- Anweisung_ verwendet).
Von da Sie wissen, was die Funktion muss für die Prüfung und was Sie erwarten in Rückkehr .
Ein einfacher erster Test würde also darin bestehen , die Funktion mit den erforderlichen Parametern aufzurufen und zu erwarten, dass das Ergebnis nicht null ist . Das ist nicht viel, aber ein Ausgangspunkt.
Von hier aus konnte man in einen hermeneutischen Kreis eintreten (ein Begriff, der von HG Gadamer - einem deutschen Philosophen - geprägt wurde. Der Punkt ist: Sie haben jetzt ein rudimentäres Verständnis der Klasse und aktualisieren dieses Verständnis mit neuem Detailwissen und haben ein neues Verständnis der gesamten Klasse.
Dies kombiniert mit der wissenschaftlichen Methode : Machen Sie Annahmen und prüfen Sie, ob sie gelten.
3) Nehmen Sie einen Parameter und schauen Sie, wo in der Klasse er irgendwie transformiert ist:
Wenn Sie beispielsweise Java wie ich verwenden, gibt es normalerweise Getter und Setter, nach denen Sie suchen können. Suchmuster $objectname
. (oder $objectname\.(get|set)
wenn Sie Java machen)
Sie können jetzt weitere Annahmen darüber treffen, was die Methode tut.
Verfolgen Sie jeweils nur die Eingabeparameter ( zuerst ) durch die Methode. Erstellen Sie bei Bedarf einige Diagramme oder Tabellen , in denen Sie jede Änderung an jeder der Variablen notieren.
Daraus können Sie weitere Tests schreiben, die das Verhalten der Methode beschreiben. Wenn Sie ein grobes Verständnis dafür haben, wie jeder Eingabeparameter entlang der Methode transformiert wird, beginnen Sie mit dem Experimentieren : Übergeben Sie null für einen Parameter oder eine seltsame Eingabe . Treffen Sie Annahmen, überprüfen Sie das Ergebnis und variieren Sie Eingaben und Annahmen.
Wenn Sie dies einmal tun, haben Sie eine Menge Tests, die das Verhalten Ihrer Methode beschreiben.
4) In einem nächsten Schritt würde ich nach Abhängigkeiten suchen : Was benötigt die Methode neben ihrer Eingabe , um richtig zu funktionieren ? Gibt es Möglichkeiten, diese zu reduzieren oder umzustrukturieren? Je weniger Abhängigkeiten Sie haben, desto klarer sehen Sie die Punkte, an denen die ersten Teilungen vorgenommen werden müssen.
5) Von dort aus können Sie den gesamten Refactoring-Weg mit Refactoring-Mustern und Refactoring zu Mustern gehen.
Hier ist ein schönes Vid: GoGaRuCo 2014- Die wissenschaftliche Methode der Fehlerbehebung Es geht um Fehlerbehebung aber dennoch nützlich für eine allgemeine Methodik zu verstehen , wie etwas funktioniert .
Sie erwähnen, dass die aufgerufene Funktion keine Eingabeparameter hat : In diesem speziellen Fall würde ich versuchen, zuerst die Abhängigkeiten zu identifizieren und sie in Parameter umzugestalten, damit Sie sie nach Belieben ein- und auswechseln können.