2016-07-20 9 views
0

Ich bin neu auf der Arbeit, und ich habe einen großen Code Java/mobile Basis geerbt. Es hat möglicherweise Hunderte von Java-Dateien. Ich verstehe es nicht. Es gibt wenig bis keine Dokumentation. Es ist meine Aufgabe, den Code und seine Funktionsweise zu verstehen. Welche Strategie oder Beratung können Sie mir geben, die mir helfen kann, dieses Problem anzugehen?Strategie zum Verständnis einer großen Codebasis

Was ich bisher versucht habe, ist, dass ich ein bestimmtes Feature in der App angeschaut habe - die Druckfunktion - und Breakpoints im Code platziert habe und einfach versucht habe, der Ausführung zu folgen. Bisher habe ich nur herausgefunden, welche Klassen in welcher Reihenfolge aufgerufen werden. Ich denke jedoch, dass dieser Weg nur ein begrenztes Verständnis dieser komplexen App bieten kann. Ich habe auch gebeten, an einer bestimmten Funktion der App zu arbeiten, und jemand kann mich beraten, wie es funktioniert, aber die Leute haben keine Zeit dafür. Kannst du noch etwas anderes empfehlen?

+1

Diese Frage ist ziemlich weit gefasst und wird zu "meinungsbasierten" Antworten führen; also ist es hier offtopic. Sie könnten versuchen, auf quora.com zu fragen. Meine Meinung: Da gibt es Tools, die versuchen, die Struktur/Architektur aus dem vorhandenen Quellcode abzuleiten. Sie verwenden solche Tools zuerst, um ein grobes Verständnis zu erhalten ** was ** Ihre Anwendung ausmacht. Nur blindes Debuggen in irgendeinem Bereich wird höchstwahrscheinlich nicht helfen. Aber noch wichtiger: Versuchen Sie, die Personen zu identifizieren, die vorher mit dem System gearbeitet haben; oder noch besser: jene Domain-Experten, die verstehen, was die App machen soll. Dann: rede mit ihnen! – GhostCat

+0

eine andere Frage, ist das, was einen genialen Programmierer von einem durchschnittlichen unterscheidet, dass er dieses Problem angehen kann und herausfinden kann, wie das alles schneller als ein durchschnittlicher Typ funktioniert und daher innerhalb von Tagen Code produzieren kann? Ist das, wonach Manager suchen? –

+1

Wieder lautet die Antwort "es kommt darauf an". Ich denke, die wichtigste Fähigkeit, um riesige bestehende Codebasen zu analysieren, ist ** Erfahrung **. Wenn Sie in der Vergangenheit mit 5, 10, 20 ähnlichen Dingen gearbeitet haben, können Sie "Muster" viel schneller finden (weil Sie auch wissen, wonach Sie suchen würden). Wenn du das zum ersten Mal machst, lernst du viele Dinge gleichzeitig. Nur wenige Menschen sind gut darin. In diesem Fall wäre Ihre "Kernkompetenz" eine Fähigkeit zur systematischen Arbeit. Aber bitte beachten Sie: SO ist kein Ort für solche Diskussionen. Sie wenden sich besser an quora.com ... – GhostCat

Antwort

1

Ich ging das gleiche mit einer großen Anwendung, die ich geerbt habe. Ich habe zwei verschiedene Tools benutzt, um digitale Notizen zu machen. Ich habe Mindmup (an online mind mapping tool, free, no download) verwendet, um zu verfolgen, was ich gelernt habe und wie ich es beim nächsten Besuch der App neu lernen kann. Ich habe auch StarUML (a free, downloaded, UML tool) verwendet. Ich habe damit Diagramme von Prozessen, Abläufen, Abhängigkeiten, Objekten in der Anwendung erstellt. Natürlich auch in einer Textdatei.

Langsam beginnt sich ein mentales Modell aufzubauen. Ein Modell, das Sie noch lange hinzufügen und bearbeiten werden.

2

Wenn Sie keinen Hintergrund in Java haben, würde ich empfehlen, einige Dokumentation über das Framework zu lesen, in dem die Software geschrieben ist. Dies könnte Frühling sein oder etwas völlig anderes, aber da ist es nicht Jede Dokumentation, die zum Projekt selbst verfügbar ist, könnte klarer werden, wenn Sie erst einmal klar verstanden haben, wie das Framework selbst funktioniert.

Abgesehen davon könnten Sie (wenn Sie Zeit dafür haben) ein Skizzendiagramm erstellen und einige der Flüsse schreiben, wie Sie es zuvor mit den Haltepunkten getan haben, und versuchen, dem Code zu folgen.

Es kann zunächst überwältigend erscheinen, aber Sie werden es früh genug bekommen.

Suchen Sie nach Startpunkten, wo der Code möglicherweise von der Benutzeroberfläche oder einer Benutzeraktion ausgelöst wird, und folgen Sie bis zum Ergebnis. Jedes Mal, wenn Sie einem Prozess folgen, wird es schneller und Ihr Gesamtbild wird klarer.

+0

eine andere Frage, ist das, was einen genialen Programmierer von einem durchschnittlichen unterscheidet, dass er dieses Problem angehen kann und herausfinden kann, wie das alles schneller als ein durchschnittlicher Typ funktioniert und daher beginnen kann Code innerhalb von Tagen produzieren? Ist das, wonach Manager suchen? –

+0

Sie scheinen Genie für erfahrene zu verwechseln. Ein Projekt aufzusuchen und zu wissen, was jedes Modul oder bewegliche Teil tut, kommt mit Erfahrung; Je erfahrener Sie sind, desto einfacher können Sie ein Projekt aufgreifen und anfangen zu arbeiten anstatt zu lernen. Es ist in der Tat eine Schande, dass Sie keinen Vorgesetzten oder eine Person haben, die an dem Projekt gearbeitet hat, um Sie durch das Projekt zu führen. Machen Sie sich keine Vorwürfe, ohne Dokumentation oder Übergabe, es ist nur eine gewisse Zeit erforderlich, um sich mit dem Produkt vertraut zu machen. –

0

Sie könnten versuchen, Ihren Java-Code in ein UML-Modell umzuwandeln und dann mehrere Diagramme durch Ziehen und Ablegen der Klassen, die Sie untersuchen möchten, zu erstellen.

Es würde Ihnen eine gute Vorstellung von den vorhandenen Klassen, Eigenschaften und Beziehungen geben. GenMyModel bietet diese Funktion direkt online an, ohne etwas installieren zu müssen: see documentation

0

Holen Sie sich zuerst eine gute Information über die Geschäftslogik.

Verwandte Themen