Bei der manuellen Überprüfung von unbekanntem Code (zum Überprüfen oder Ändern) habe ich anscheinend drei Möglichkeiten.
- Ein Lesen des Codes von oben nach unten , wobei jede nächste Quelldatei anhand der grundlegenden Bedeutung des Dateinamens ausgewählt wird. Normalerweise lese ich fast alles. Einige Dateien zweimal.
- Eine umfassende Lektüre , bei der ich alle aufrufenden Methoden mit minimalem Verständnis finde und lese. Lesen Sie dann alle Funktionen, die von dieser Funktion aufgerufen wurden, und so weiter. Mein mentaler Stack neigt zum Überlaufen, wenn ich ein paar Anrufe tief mache.
- Eine Tiefenlesung , bei der ich den gesamten Code in einem Debugger durchlaufe und nicht sicher bin, ob dies 8 Minuten oder 8 Stunden dauern wird.
Sobald ich genug von dem Code gelesen habe, um ein ziemlich solides Verständnis dessen zu haben, was er tut, denke ich oft, dass ich 80% oder mehr der Codebasis gelesen habe, während der grundlegende Code 20% oder weniger beträgt . Ich habe viel Zeit verschwendet.
Welche Tools sind nützlich, um schnell einen Einblick in unbekannten Code zu erhalten? Gibt es Tools, die einen Überblick über den kritischen Codepfad geben und es mir ermöglichen, einen Drilldown zu den Details eines Teils durchzuführen?
tools
code-reviews
source-code
maintenance
Drew Dormann
quelle
quelle
Antworten:
Das Beste ist natürlich, dass jemand, der die Codebasis kennt, Sie durch die Codebasis führt. Wenn dies keine Option ist, gibt es einige Tools, die Ihnen helfen können.
Im Allgemeinen möchten Sie auch eine IDE mit vollem Funktionsumfang verwenden, bei der Sie mit der rechten Maustaste auf etwas klicken und zur Definition wechseln können. Dies kann Ihnen viel Zeit sparen, verglichen mit der Verwendung von grep für viele Dateien in einer komplexen Verzeichnisstruktur.
Eine weitere wichtige Sache, je nachdem, wie lange Sie sich mit dem Code befassen müssen. Wenn es Unit-Tests gibt, schauen Sie sich die Tests an. Wenn es keine Tests gibt, schreiben Sie sie. Bilden Sie eine Hypothese darüber, was eine bestimmte Klasse oder Funktion tut, und schreiben Sie einen Test, um sie zu testen. Dies erfordert viel Disziplin, ist aber eine großartige Möglichkeit, Antworten darauf zu erhalten, was im Code passiert.
quelle
Dies ist ein drastischerer Ansatz. Diese Technik kann für ein Projekt nützlich sein, das viele Klassen enthält, die nicht in aussagekräftigen Namespaces organisiert sind.
Das Ziel dieser Übung ist es, die Klassenbeziehung zu entdecken. Erstellen Sie einen Wegwerfklon des Projekts und versuchen Sie dann, einige Klassen in Namespaces einzufügen. Um bei wiederholten Versuchen Zeit zu sparen, verwenden Sie einige Regex-Dateiverarbeitungswerkzeuge, um diese Änderung zu automatisieren.
Dies führt zu vielen Compilerfehlern. Bei der Behebung dieser Fehler kann man besser verstehen, wie diese Klassen voneinander abhängen, und entscheiden, welche Klassen in denselben Namespace eingefügt werden können.
Diese Technik ist insofern nützlich, als man sie auch bei geringem Verständnis der Code-Organisation des Projekts anwenden kann. Dies birgt das Risiko, dass einige Klassen aufgrund von Missverständnissen durch diese Technik verlegt werden.
quelle