2009-03-03 16 views
3

Wie untersucht man Code von Open-Source-Bibliotheken, insbesondere Standardbibliotheken? Die Codebasis ist oft umfangreich und schwer zu navigieren. Wie finde ich eine Funktion oder Klassendefinition?Studieren von Standard-Bibliotheksquellen

Durchsuche ich heruntergeladene Quelldateien? Brauche ich cvs/svn dafür? Vielleicht Websuche? Sollte ich nur die Struktur der Standardbibliothek kennen? Gibt es einen Hinweis darauf? Oder haben einige IDEs solche Funktionen? Oder einige andere Werkzeuge? Wie geht es effektiv ohne einen? Was sind die besten Vorgehensweisen in Open-Source-Bibliotheken? Gibt es eine Konvention, wie Quellen auf Linux/Unix-Systemen manipuliert werden? Was sind die Unterschiede für bestimmte Programmiersprachen?

Eine breite Präsentation des Themas ist sehr erwünscht. Ich kenn dieses "Community-Wiki", damit jeder meine peinlichen Formulierungen umformulieren und erweitern kann!

Update: Wahrscheinlich hat das Problem nicht klar genug ausgedrückt. Was ich will, ist nur die Quellcode einer bestimmten Bibliothek Klasse oder Funktion zu sehen. Und das Problem ist hauptsächlich die Arbeitsorganisation und Benutzerfreundlichkeit - wie navigiere ich in dem riesigen Haufen von Quellen, um das Ding zu finden, vielleicht gibt es spezielle Werkzeuge oder Ansätze? Es fühlt sich so an, als hätte es schon einige Lösungen dafür geben müssen.

Antwort

0

Nun, ich denke, dass es wahnsinnig ist, einfach nur den Code einer Bibliothek abzurufen und zu lesen. Mein Ansatz ist es, immer dann zu suchen, wenn ich auf die Notwendigkeit stoße, etwas selbst zu implementieren und dann zu untersuchen, wie es in diesen Bibliotheken implementiert wird.

Und es gibt auch allot von Projekten/Bibliotheken mit ausgezeichneter Dokumentation, die ich wichtiger als den Code zu lesen finde. In Unix-basierten Systemen finden Sie häufig wertvolle Informationen in den man-Seiten.

1

Eine Sache zu beachten ist, dass Standardbibliotheken manchmal (oft?) Mehr optimiert sind als für die meisten Produktionscodes.

Weil sie weit verbreitet sind, müssen sie auch über eine Vielzahl von Bedingungen durchzuführen, und kann für Sonderfälle voll von cleveren Tricks und spezielle Logik sein.

Vielleicht sind sie nicht die beste Sache, um als Anfänger zu lernen.

Nur ein Gedanke.

0

Wow, das ist eine große Frage.

Die kurze Antwort: es kommt darauf an.

Die lange Antwort: Einige Bibliotheken bieten Dokumentation während andere dies nicht tun. Standardbibliotheken sind normalerweise ziemlich gut dokumentiert, unabhängig davon, ob die gewählte Implementierung der Bibliothek Dokumentation enthält oder nicht. Zum Beispiel haben Sie vielleicht eine Implementierung der c-Standardbibliothek ohne Dokumentation gefunden, aber der c-Standard existiert schon lange genug, dass es Hunderte von guten Nachschlagewerken gibt. Dokumentation mit Hyperlinks ist eine sehr nützliche Methode zum Erlernen einer neuen API. Auf jeden Fall ist der erste Ort, den ich sehen würde, ist die Haupt-Website der Bibliothek

Für weniger bekannten Bibliotheken fehlen Dokumentation finde ich zwei verschiedene Ansätze sehr hilfreich.

Zuerst ist ein doc-Generator. Fast jede Sprache, die ich kenne, hat eine. Es analysiert im Grunde einen Quellbaum und erstellt Dokumentation (normalerweise als HTML oder XML), die zum Lernen einer Bibliothek verwendet werden kann. Einige verwenden speziell formatierte Kommentare im Code, um eine vollständigere Dokumentation zu erstellen. JavaDoc ist ein gutes Beispiel dafür. Doc-Generatoren für viele andere Sprachen entlehnen JavaDoc.

Zweitens eine IDE mit einem Klassenbrowser. Diese fungieren als eine Art On-the-Fly-Dokumentation. Einige zeigen nur die Benutzeroberfläche der Bibliothek an. Andere enthalten Beschreibungskommentare aus der Quelle der Bibliothek.

Beide benötigen Zugriff auf die Bibliotheksquelle (was praktisch ist, wenn Sie tatsächlich eine Bibliothek verwenden möchten).

Viele dieser Tools und Techniken funktionieren gleichermaßen gut für geschlossene/proprietäre Bibliotheken.

0

Der Quellcode der Standard-Java-Bibliotheken ist verfügbar. Für einen beginnenden Java-Programmierer kann dies ein großartiger Lesevorgang sein. Besonders das Collections-Framework ist ein guter Anfang. Nehmen Sie zum Beispiel die Implementierung von ArrayList und lernen Sie, wie Sie ein resizierbares Array in Java implementieren können. Der Großteil der Quelle enthält sogar nützliche Kommentare.

Die besten Teile zu lesen sind wahrscheinlich, deren Zweck Sie sofort verstehen können. Beginnen Sie mit den einfachen Teilen und versuchen Sie, alle Schritte zu verfolgen, die hinter diesem einzelnen Anruf aus Ihrem eigenen Code verborgen sind.

0

Etwas, das ich von Zeit zu Zeit tun:

apt-get source foo 

Dann neues C++ Projekt (oder was auch immer) in Eclipse und Import.

=> Wow! Durchsuchbar! (Verwenden Sie F3)

Verwandte Themen