Durchsuche den Code und suche nach Orten, von denen du denkst, dass du weißt, was passiert. Lies dir diese Abschnitte durch, um zu sehen, ob dein erster Gedanke Bestand hat, und versuche dann, ihn zu ändern, um zu sehen, ob du ihn ändern kannst, um etwas anderes zu tun.
Ich schlage vor, dass sich dies leicht an der Projekt-Roadmap orientiert, damit Sie dann feststellen können, wo Sie neue Funktionen und Fehlerkorrekturen finden, damit Sie sinnvoll beitragen können.
Lesen Sie auch die Dokumentation und eventuell vorhandene Spin-up-Dokumente (funktionale Spezifikationen, Anforderungsspezifikationen usw.). Dies kann Ihnen helfen, die Codeseile schneller zu lernen:)
Lernen Sie mit einem Ziel. Ich denke, du wirst am besten lernen, wenn du ein Ziel vor Augen hast - repariere das oder füge diese Funktionalität hinzu. Suchen Sie nach den wahrscheinlichen Orten, an denen Sie Ihre Änderungen vornehmen müssen. Folgen Sie den Threads der Steuerung rückwärts, um herauszufinden, wie Sie zu diesem Punkt im Code gelangen. Werfen Sie auch einen Blick auf den Code "aus der Vogelperspektive" - sehen Sie sich das Layout und die Struktur an. Guter Code wird beschreibende Namen haben, die angeben, für welche Klasse und für welche Methode sie bestimmt sind. Sehen Sie, ob Sie Implementierungsmuster erkennen und sehen können, wo / wie sie verwendet werden. Legen Sie nicht zu viel in die Dokumentation - Dokumente können ausgezeichnet sein, aber sie sind oft nicht synchron mit dem, was der Code wirklich tut. Lassen Sie den Code selbst die beste Dokumentation sein.
Wenn Sie Bücher suchen, die ich nützlich fand, um zu lernen, wie man aus dem Code lernt, würde ich die Bücher von Diomidis Spinellis Code lesen Lesen: Die Open-Source-Perspektive und Codequalität: Die Open-Source-Perspektive .
Für Ihre spezifische Frage würde ich mit Code Reading beginnen. Aber beide sind gute Bücher.
Ich ziehe es vor, den Code Zeile für Zeile in einem IDE-Debugger zu durchlaufen. Es ist nicht praktisch zu versuchen, den gesamten Code in einem großen System zu erreichen, aber ich beginne damit, den Start der Anwendung zu debuggen und gehe dann zu anderen Bereichen des Codes über, die für die Anwendung interessant / wichtig sind.
Danke für Ihre Antworten. Viele nützliche Informationen.
Einige Tools, die ich denken kann, sind:
Noch mehr Vorschläge zu nützlichen Tools?
Finde einen kleinen Ort, an dem du dich wohl fühlst und verändere ihn. Ignoriere den Rest; Sie werden lernen, wenn Sie es brauchen. Fühle dich von der Größe nicht überwältigt; Jedes Programm begann mit der ersten Zeile, und wenn es nicht in kleinen, unabhängigen Bits organisiert war, konnte es nicht beibehalten werden. Es gibt also immer eine Nische für dich.
Ich würde vorschlagen, eine Funktion zu finden, die Sie wirklich hinzufügen möchten.
Ich habe nur einmal wirklich einmal einen Berg von jemand anderem Code durchgesehen, und es wurde viel einfacher gemacht, weil das Feature, das ich hinzufügen wollte, etwas war, was ich wirklich brauchte. Ich denke, das ist der Grund, warum die meisten Open-Source-Projekte trotzdem starten. um ein Bedürfnis zu erfüllen.
Rob
Ich habe festgestellt, dass Schritt 3 in der Regel sehr involviert ist und es mir eine Richtung gibt, wie man den Code liest und lernt, wie das System funktioniert.
Das Hinzufügen einer Funktion kann eine gute Idee sein, aber in einem großen System könnte es ein Problem sein, herauszufinden, was diese Funktion ist. Nicht nur das, jede Funktion, die Sie schreiben, um das System zu lernen, wird höchstwahrscheinlich am Ende aussehen wie Mist, weil Sie keine Ahnung haben, was wo ist und wie das System funktioniert. Die Funktion, die Sie hinzufügen möchten, kann Sie jedoch zu dem richtigen Punkt in # 3 führen, also raten Sie nicht ab.
-s
Versuchen Sie, die Klassendiagramme rückzuentwickeln.Sagen Sie, dass es eine Funktionalität gibt, die von A nach B.Set break point bei A geht, debuggen Sie, gehen Sie durch und beobachten Sie die Kommunikation, zeichnen Sie die Links und die Vererbung auf Ihrem Papier Verwenden Sie auch ein Sequenzdiagramm. Dies hat mir geholfen, die spezifische Funktionalität eines Systems zu verstehen.
Wenn Sie mit dem Projekt vertraut sind und eine Vorstellung davon haben, was Sie beitragen möchten, rufen Sie die neueste Version des Codes ab und nehmen Sie die Änderung vor, die Sie vornehmen möchten. Versuchen Sie nicht, den gesamten Code gleichzeitig zu verdauen. Suchen Sie nach Mustern und Konventionen, die verwendet werden, und versuchen Sie, diese so gut wie möglich einzuhalten.
Tags und Links open-source