2010-05-20 16 views
10

Ich bin ein Trainee-Entwickler und habe seit etwa einem Jahr .NET-Anwendungen geschrieben. Die meiste Arbeit, die ich gemacht habe, beinhaltete das Erstellen neuer Anwendungen (hauptsächlich Web-Apps) von Grund auf und ich hatte mehr oder weniger die volle Kontrolle über das Software-Design.So verstehen Sie bestehende Projekte

Dies war jedoch eine großartige Erfahrung, als Trainee-Entwickler meine Zuversicht darüber, ob die Ansätze, die ich habe die besten Ansätze sind minimal ist. Idealerweise würde ich gerne mit erfahreneren Entwicklern zusammenarbeiten (ich finde das Beste, was ich gelernt habe), aber in der Firma, für die ich arbeite, tendieren Entwickler dazu, isoliert zu arbeiten (eine große Schande für mich).

Vor kurzem entschied ich, dass eine gute Möglichkeit, mehr darüber zu erfahren, wie erfahrene Entwickler ihr Design angehen, darin besteht, einige Open-Source-Projekte zu erkunden. Ich war ein wenig überwältigt von den Projekten, die ich betrachtete. Mit meiner Erfahrung war es schwer, den Code zu verstehen, dem ich gegenüberstand.

Meine Frage ist leicht verschwommen. Wie nähern sich Entwickler der Aufgabe, ein neues Mittel- bis Großprojekt zu verstehen? Ich überfiel mich mit viel Code und kämpfte darum, das Holz für die Bäume zu sehen. Zu jeder Zeit hatte ich das Gefühl, dass ich einen kleinen Teil des Systems verstehen konnte, aber nicht sah, wie alles zusammenpasst. Haben andere das gleiche Gefühl? Wenn ja, mit welchen Ansätzen werden Sie das Projekt verstehen? Haben Sie weitere Ratschläge, wie Sie Best Practices für das Design lernen können?

Jeder Rat wird sehr geschätzt werden. Vielen Dank.

+2

Dupe http://stackoverflow.com/questions/1307790/how-to-improve-your-reading-and-understanding-of-code und http://stackoverflow.com/questions/2777465/resources-for- Lernen-wie-zum-besser-lesen-Code zum Beispiel. –

+0

Bitte editiere deine Frage, um sie als Community Wiki zu markieren, sonst werden sie geschlossen. –

Antwort

3

Kommunizieren

Ich würde in der Regel einen Entwickler frage mir, einen Überblick über das Projekt oder einen des Projektmodule zu geben, dass ich interessiert bin. Ich habe nicht so weit nichts gefunden, die besser ist als die Kommunikation mit den beteiligten Entwicklern in eine bestehende Codebasis eingeführt werden. Sie können Ihnen nicht nur einen Überblick über das Projekt und den Code geben, sondern auch jede verfügbare Dokumentation (z. B. Klassendiagramme) empfehlen, die einen Blick wert ist.

2

Sie sollten immer nach einem besseren Weg suchen. Im Kern geht es darum, dass man sich selbst fährt, um besser zu werden. Immer zu fragen: "Es muss einen besseren Weg geben" ist eine gute Sache - aber lass dich nicht lähmen. Stellen Sie eine Zeit ein, um etwas zu versuchen, wenn Sie nicht irgendwo hinkommen, lassen Sie es fallen, gehen Sie eine andere Route.

Was ist Veränderung Menschen, denen Sie vertrauen, Menschen, von denen Sie Ideen abprallen können und Gemeinschaften, auf die Sie schauen können. Ich mache das die ganze Zeit mit einer kurzen Liste von Leuten, die schon früher mit mir gearbeitet haben, besser sind als ich in Bereichen, von denen ich weiß, dass ich daran lutsche, und es mir nichts ausmacht, mir zu sagen "nein, schlecht, du solltest tun (irgendeine andere Idee) ". Diesen Schritt hast du bereits mit dem Posten hier gemacht :-)

In Bezug auf Projekte - jedes Mal, wenn ich ein Projekt anspreche, das bereits existiert, ist nicht meins, die Leute, die es geschrieben haben, sind nicht da, der Code ist alt Dokumentation ist spärlich und so, ich konzentriere mich auf ONE THING und eine Sache allein. Versuchen Sie nicht, das gesamte System zu verstehen, das ist unrealistisch und machen Sie sich keine Sorgen, wenn Ihre Änderungen die perfekte Lösung sind - das wird sich mit der Zeit herausstellen und offensichtlich werden, wenn Sie die Dinge verbessern und verstehen . Wissen Sie, was Sie nicht wissen, machen Sie keinen Hehl daraus und lernen Sie einen Kanal nach dem anderen. Sogar eine Menge Tricks und coole Dinge zu kennen, bedeutet nicht viel, wenn man mit Datensätzen bis 2003 zurückgehen muss.

Sie erwähnten, dass Menschen sehr isloated sind ... das ist schade, denn wenn man etwas entwickelt, müssen viele Leute miteinander reden. Ich würde vorschlagen zu fragen, ob Sie Programm mit einem von ihnen paaren können, die viel über das System wissen. Wenn diese Person Ausreden vorbringt oder sagt "sie können nicht" jemanden finden, der das will.

+0

Danke. Das ist wirklich hilfreicher Rat. Ich identifiziere mich sofort mit dem, was Sie sagen, wenn Sie nicht mit Design-Experimenten gelähmt sind. Schuldig! – John

8

Dies ist eine sehr interessante Frage. Ich würde auch gerne wissen, wie andere Entwickler das machen. Bis jetzt verwende ich diese Möglichkeiten in keiner bestimmten Reihenfolge:

  • Lesen Sie den Quellcode, es hat den Vorteil, dass es immer auf dem neuesten Stand ist. Es ist auch die schwierigste Aufgabe, aber es ist möglich.
  • Lesen Sie die Komponententests, wenn sie verfügbar sind, zeigen sie oft die beabsichtigte Verwendung für eine Klasse, Bibliothek oder Framework.
  • Refactor einen Teil des Quellcodes. Während Sie die Qualität des Quellcodes verbessern, erhöhen Sie Ihr Verständnis des Codes, oder sollte ich sagen, dass Sie den Quellcode nur verbessern können, wenn Sie genau wissen, was es tut.
  • Debuggen Sie die Anwendung, durchlaufen Sie das Programm, während Sie einen Debugger verwenden.
  • Verwenden Sie ein Tool wie NDepends, JDepends, Lattix, Visual Studio usw., um die Architektur oder das Design der Anwendung zurückzuentwickeln und diese als Ausgangspunkt zu verwenden.
  • Lesen Sie die Dokumentation. Jede Dokumentation, die Ihnen hilft, die Anwendung zu verstehen, reicht aus (Benutzerdokumentation, Designdokumentation oder Architekturdokumentation).
  • Kommunikation mit den ursprünglichen Entwicklern, wie Bruno sagte, wäre auch eine gute Option.
  • 2

    Frage ich habe mich gefragt, als ich meine Reise begann. In erster Linie erfordert es viel Geduld und Zeit, abhängig von der Größe des Projekts. Hier ist, was ich heute tun, ein vorhandenes Projekt zu verstehen und die Projekte, die ich arbeiten meist sind Datenbank zentrierte und diese Liste ist nicht unbedingt für Open-Source-Projekte, sondern auch für die Arbeit Ort Projekte

    1. Erstellen Sie ein ER-Diagramm der Datenbank
    2. eine eR Relational Blatt mit allen Beziehungen der Tabellen (wenn es sich um eine relationale Datenbank ist) angelegt (hier wird eine sQL-Abfrage http://blog.sqlauthority.com/2006/11/01/sql-server-query-to-display-foreign-key-relationships-and-name-of-the-constraint-for-each-table-in-database/)
    3. Verwenden sie das obige Blatt Ansichten zur Gruppe erstellen die Tabellen logisch und Sehen Sie die Ergebnisse. Dies trägt dazu bei, das Schema und die Daten hinter Anwendung
    4. Diagramm zu legen, die Ebene und die Komponenten im Projekt
    5. Sequenzdiagramm und Datenflussdiagramme zu verstehen, den Fluss
    6. Für das zu verstehen, über Sie die Anwendung debuggen müssen mit dem Werkzeug wie Visual Studio
    7. Klassendiagramm und Referenzkarten von Methoden, um die Kette in Code zu under (kann Tools wie ReSharper verwenden)
    8. Funktionsdaten (oder Ihre eigene Geschichte des Projektes schreiben) und Use-Case-Diagramme (verstehen Geschäftsanforderungen)
    9. Umgestalten einen kleinen Teil der Code besser
    10. Sprechen Sie mit Entwicklern oder Gemeinde oder Unternehmen
    +0

    Hier einige interessante Tipps gefunden http://programmers.stackexchange.com/questions/146471/understanding- bereits existierende-complex-code-base – brenmartin

    3

    Hier sind einige gute Schritte vor dem Tauchen in den Quellcode eines Projekts Sie nie in schaute zu betrachten, zu verstehen.

    1. Schritt - versuchen Sie, den Zweck des Projekts (erste Übersicht dann auf niedrigem Niveau) zu verstehen, wenn möglich, nehmen Sie die Hilfe von Tester.

    2. Schritt - Bevor Sie mit dem Code arbeiten, versuchen Sie, das Projekt auf einem sehr hohen Niveau zu entwickeln (verbringen Sie nicht viel Zeit darauf, nur auf einem sehr hohen Niveau).

    3. Schritt - führen Sie das Projekt aus und sehen Sie den Fluss, damit Sie mehr Klarheit über das Verständnis des funktionalen Designs erhalten.

    4. Schritt - die Struktur des Projektes sehen, wird es eine sehr grundlegende Idee der Architektur wie mit drei Reihen geben, zwei Tiere usw.

    5. Schritt - das Programm erneut im Debug-Modus ausführen und versuchen, den technischen Ablauf auf Modul- und Klassenebene zu verstehen. bedeutet, welches Modul die Geschäftslogik enthält und wo die Datenzugriffslogik geschrieben ist, versuche auch die Eingabe und Ausgabe für diese Module zu verstehen.

    6. Schritt - Beachten Sie Ihr Verständnis für zukünftige Referenz.

    7. Schritt - noch einmal die Anwendung im Debug-Modus ausführen, diesmal verstehen den Zweck der Klasse und die Methoden, die es enthält. Führen Sie verschiedene Funktionen der Anwendung im Debug-Modus aus und folgen Sie dem Steuerelement, wo immer es hingeht. Sehen Sie sich die Klassen und alle Methoden dieser Klasse an und versuchen Sie, sie mit der von Ihnen ausgeführten Funktionalität in Beziehung zu setzen - zB wenn Sie eine Seite ausgewählt haben (Sie wissen, dass es ein neues Konto für Sie öffnen wird - folgen Sie einfach dem Steuerelement im Debug-Modus und sehen Sie, welche Klassen beteiligt sind und versuchen Sie, ihre Methoden dann am Ende dieses Zyklus Sie zu verstehen wird viele Dinge über Kontoeröffnung technisch verstehen). wenden das gleiche Verfahren für verschiedene Funktionalitäten an.

    Prost!

    Verwandte Themen