Was ist der beste Open Source Code, den Sie jemals gesehen haben? [geschlossen]


19

Ein Teil des Wertes von Open Source besteht darin, den Menschen, die mit einer neuen Plattform oder Sprache beginnen, großartigen Beispielcode zur Verfügung zu stellen.

Was ist der beste Open Source-Code, den Sie kennengelernt haben, und warum gefällt Ihnen Ihre Wahl? Jede Sprache ist geeignet, aber ich bin besonders an den besten Beispielen für Objective-C interessiert, auf die Sie hinweisen können.

Offensichtlich ist dies eine offene Frage, also lasse ich die Frage eine Weile offen und sehe, welche Arten von Antworten wir bekommen.

Vielen Dank!

BEARBEITEN: Zum "Besten" dachte ich an Code, der den Redewendungen in der angegebenen Sprache oder Plattform folgt, sowie die Teile, die den Code "professionell" machen - gute Dokumentation, eine Testsuite usw. Code, der kurz und prägnant ist, aber Nicht übermäßig clever ist sehr knappem oder gesprächigem Code vorzuziehen.


4
Gibt es eine bestimmte Definition für "am besten"?

Ihre Frage ist etwas weit gefasst. Vielleicht können Sie es genauer bearbeiten und definieren, was "am besten" für Sie bedeutet. Beste Benutzeroberfläche, beste Desktop- / Web- / Telefon-App, beste Übereinstimmung, bester optisch ansprechender Code?
Walter

+1 für eine gute Frage. Ich schlage vor, Sie beschneiden es auf eine bestimmte Sprache / Technologie. Der Vergleich von C für Linux mit Java für den Datenbanktreiber ist offen gesagt eine inkonsistente Idee.
Fanatic23

Es wäre sehr hilfreich für andere, die die Frage lesen, wenn Sie diese Klarstellung in sie überarbeiten würden. :)
Michael K

Antworten:


14

Ich muss sagen, dass ich, nachdem ich mir über die Jahre Teile von Open Source Code angesehen habe, von so ziemlich allem sehr enttäuscht war.

Das Hauptproblem für mich ist, dass es normalerweise nur sehr wenige Kommentare gibt, häufig sind die einzigen Kommentare einige lange und legalistische Urheberrechtsvermerke.

Der Linux-Kernel ist ein Beispiel, in dem die Dateien häufig nicht einmal einen Kommentar enthalten, aus dem hervorgeht, welchem ​​Zweck sie dienen (z. B. würde mir der Treiber für XYZ zumindest sagen, dass ich ungefähr am richtigen Ort bin).

Ich komme aus der kommerziellen und Verteidigungsprogrammierung, wo die Codierungsstandards vernünftige, verständliche Kommentare erfordern, um nicht nur zu sagen, was eine Codeeinheit tut, sondern es muss im gesamten Code Kommentare geben, die Algorithmen, Methoden, Besonderheiten, Hacks / clevere Dinge beschreiben Dies alles, damit jeder, der danach kommt, SCHNELL nachsehen und herausfinden kann, was gerade getan wird, anstatt sich mühsam durch den eigentlichen Code zu wühlen.

Vielleicht lautet die Moral: Sag mir, was du tust, bring mich nicht dazu, es herauszufinden.

Ich habe keinen Open Source Code gefunden, der dies gut kann. Was Open Source als Mittel zum Erlernen guter Codierungspraktiken anbelangt, lautet mein Ikterusrat: Nicht.


Ich stimme zu, dass Open Source-Projekte oft schlecht kommentiert und schlecht dokumentiert sind. Aber sie sind alle Freiwillige. Es ist schwierig, Freiwillige dazu zu motivieren, unangenehme Dinge zu tun, normalerweise ohne die Belohnung, nach der sie suchen (Status, soziales Engagement, Erzielen großartiger Dinge oder Tun, was sie lieben).

@ pierre303 - Ich habe NoRMproject.org gegründet und betreue es. Eines der wichtigsten Dinge, die ich tue, ist das Schreiben von Kommentaren, wenn ich den Code schreibe, und das hilft. Ich denke, dass die Mitwirkenden an den Teilen arbeiten werden, die die Führer hervorheben. Im Fall von NoRM waren dies Tests, Kommentare und idiomatischer Code (in c #). Ich denke, wir haben eine ziemlich professionelle, wartbare Codebasis.
Andrew Theken

Ich bin damit einverstanden, dass Kommentare geschrieben werden sollten, während der Code geschrieben wird. (Ich tue dies auch in allen meinen eigenen Code, vor allem , weil ich egoistisch bin und es hilft mir vor dem Codeblock eine Erzählung zu schreiben -. Es in meinem Kopf stellt klar , was ich tun muß , bevor ich es tatsächlich tun)
quick_now

Erinnert mich an dieses lustige Zitat, mit dem ich einmal in Berührung gekommen bin: "Wenn es mir schwer fiel, es zu schreiben, sollten sie es schwer haben, es zu lesen."
Denis de Bernardy

+1, @quickly_now - Sie denken, dass Code gut geplant, gut getestet und jetzt gut kommentiert sein sollte! Auf was für einem verrückten Planeten lebst du?

5

Ich habe sehr gute Dinge über die SQLite- Codebasis gehört.

Von dem kleinen, in das ich hineingeschaut hatte, sieht es sehr sauber aus.


5
Es verfügt auch über eine umfangreiche Testsuite , die es zu einem Studienmodell für Softwaretests macht.
Robert Harvey

Ich wünschte nur, es hätte eine C ++ - Schnittstelle: /
Matthieu M.

5

Donald Knuth schrieb zwei Programme, mit denen er seine mathematischen Formeln in seine Bücher besser eingeben konnte als sein Verlag.

Diese beiden Programme (in ihrer endgültigen Version) wurden mit Literate Programming geschrieben, das das Erstellen einer gedruckten, gesetzten Version des Quellcodes ermöglichte, und sie wurden als Bücher veröffentlicht. Dies sind einfach die am besten dokumentierten Programme, die ich je gelesen habe!

  • "Computer & Schriftsatz, Band B: TeX: Das Programm"
  • "Computer & Schriftsatz, Band D: Metafont: Das Programm"

Sie können nicht online gelesen werden, aber Amazon bietet Ihnen die Möglichkeit, das Metafont-Buch unter http://www.amazon.com/Computers-Typesetting-D-Metafont-Program/dp/0201134381/ zu lesen.

Achtung: Es handelt sich um schweres Zeug, weshalb jedes Buch 600 Seiten umfasst.


1
Hinweis: Dies ist die gesetzte Version, die online nicht verfügbar ist. Die Quelle ist vollständig verfügbar und kann mit geringem Aufwand zur Erstellung der gedruckten Version verwendet werden.

4

Das Buch Beautiful Code versucht, diese Frage mit einigen Beispielen zu beantworten, von denen die Autoren glauben, dass sie Beispiele für schönen Code aus Open-Source-Projekten sind.
Alt-Text


4
Lohnt es sich, das Buch zu lesen?
Oliver Weiler

Dies ist jedoch kein Open-Source-Code aus der "realen Welt". Diese Antwort betrügt! : P
Noldorin

1
Ich besitze es, war nicht beeindruckt. Die meisten Kapitel sind langweilig, aber es gibt ein paar Highlights darin - Karte / Verkleinern wird erklärt, wenn ich mich richtig erinnere.
Martin Wickman

4

CodeIgniter

Einige der saubersten und am besten dokumentierten Quellcodes, die ich in einem OS-Projekt gesehen habe.


1
PHP & am saubersten?
Kugel

1
@ Kugel: Ja zu beiden.
Josh K

Habe mir gerade den Quellcode von CodeIgniter angesehen, und es scheint in der Tat sehr gut strukturiert und sauber zu sein. Ich finde so schön, dass du in PHP rein kommst. :) Und ich mochte immer Humor im Quellcode: "// Noch keine DB angegeben? Schlagen Sie sie sinnlos ... if (! Isset ($ params ['dbdriver']) ..."
Bjarke Freund-Hansen

2
Ich habe mir den Quellcode angesehen und muss zugeben, dass er gut dokumentiert und leicht zu befolgen war, und ich hatte ihn nicht von einem PHP-Betriebssystem erwartet.
OnesimusUnbound

2
Ein weiteres großartiges PHP-Framework für Betriebssysteme ist fuelphp ( fuelphp.com ), das ebenfalls dokumentiert und übersichtlich gestaltet ist und Namenskonventionen verwendet, die Sie nicht dazu bringen, sich die Haare auszureißen . Das beweist nur, dass es nicht PHP ist, der für Spaghetti-Code verantwortlich ist, sondern normalerweise die Leute, die den Code schreiben.
Michael JV

3

Ich habe 2 Projekte gesehen, die sehr gut strukturiert sind:

  1. Django
  2. Chrom-Projekt

Insbesondere die zweite ist aufgrund weniger Dinge sehr interessant:

  • Wie es Prozesse für viele Dinge verwendet (Tabs, Plug-Ins) und wie es zusammenpasst
  • Multi-Plattform mit nativer Benutzeroberfläche für jedes Windows, Mac, Linux
  • Web-Kit-Integration

Ich habe auch gehört, dass Postgre sauber geschrieben ist (im Gegensatz zu MySql), aber ich habe es selbst nicht gelesen.


1
+1 für den PostgreSQL-Code. Es ist sehr sauber und lesbar.
Denis de Bernardy

2

Einige sagen, der C-Code für den Linux-Kernel sei verdammt gut.

(Nicht, dass ich die Sache verstehe! Es ist möglicherweise das beste Open-Source-C-Projekt, das es gibt.)


1
Für optimierten Code ist es großartig. Für die Lesbarkeit meiner Erfahrung nach nicht so gut. Natürlich habe ich keine geschrieben , lese es einfach ...
Michael K

1
Das stimmt. Leider definierte die Frage nicht wirklich "am besten", so dass ich meine eigene Definition nehme. :)
Noldorin

2

Ich habe festgestellt, dass der LLVM- Quellcode sehr gut lesbar ist. Ich bin mir ziemlich sicher, dass es das sauberste C ++ ist, das ich je gesehen habe. Wenn Sie nicht damit vertraut sind, handelt es sich im Grunde genommen um ein Compiler-Konstruktions-Toolkit.

  • Es verfügt über eine umfangreiche Testsuite. Tatsächlich hat es mindestens zwei: einen Satz zum Testen von Funktionen und einen zum Testen der Leistung (von LLVM selbst sowie der von ihm generierten kompilierten Programme).
  • Der Code ist gut kommentiert.
  • Sehr sich wiederholender Code (wie der Anweisungsvergleich in den verschiedenen Backends) wird automatisch aus einer übergeordneten DSL-Beschreibung (TableGen) generiert.
    • Auf diese Weise können auch mehrere nicht zusammenhängende Codeteile aus derselben Beschreibung generiert werden. Beispielsweise wird die Backend-Spezifikation als Teil eines Compiler-Backends verwendet, aber auch für Assembler und Disassembler.
  • Es hat ziemlich gute Dokumentation.

Es ist jedoch ein ziemlich großes Projekt. Erwarten Sie also nicht, schnell zu verstehen, wie alles funktioniert. Aber es sollte ziemlich einfach sein, sich einen Überblick zu verschaffen.


1

Es ist kein großes Projekt, aber das SubSonic ORM war für mich extrem einfach zu hacken. Es war das erste echte Open Source-Projekt, das ich genau nach meinen Wünschen modifizieren konnte. Bei den meisten anderen schaute ich auf die Quelle und schlug meinen Kopf gegen eine Wand. Ich hatte es teilweise Unterstützung von PostgreSQL (basierend auf der SQL Server-Provider-Sache) innerhalb weniger Stunden. Es ist das am besten organisierte Projekt, das ich bisher gesehen habe. Allerdings habe ich mir viele Open-Source-Projekte angesehen.


0

Zunächst ein einfaches Beispiel: Der Code für das Event-Handling-System zope.event. Ich hatte andere Ereignissysteme verwendet, die Ereignisse an andere Ereignis-Listener weiterleiteten. Als ich den Code von zope.event sah, wurde mir langsam klar, wie einfach manche Dinge sein könnten.

Es ist in Python geschrieben, und hier ist der Code in seiner Gesamtheit:

subscribers = []

def notify(event):
    """ Notify all subscribers of ``event``.
    """
    for subscriber in subscribers:
        subscriber(event)

So fügen Sie einen Abonnenten hinzu:

from zope.event import subscribers
subscribers.add(MySubscriber())

Das beste Beispiel für KISS, das ich gesehen habe.

Dann ein komplexeres Beispiel: Die Mars- Codebasis ist sehr schön und einfach zu lesen, obwohl sie einige clevere Python-Hacks verwendet. Gleiches gilt für den meisten Code von Grok, der mit Martian erstellt wurde.


3
Ich verstehe nicht, was mit diesem Code toll ist. Ich kenne Python nicht, aber ich sehe hier nur eine einfache Verwendung des Beobachtermusters und sonst nichts.
Barjak

Haben Sie es mit anderen Ereignissystemen verglichen? Nehmen Sie der Einfachheit halber ein anderes Python-Beispiel: pypi.python.org/pypi/pyjon.events/1.1.1
Lennart Regebro

1
Schön - ich habe tatsächlich etwas sehr ähnliches in Javascript geschrieben. Ich denke, ich bin schlau? ;)
Michael K

Nur weil es weitaus schlechtere Ereignissysteme gibt, heißt das noch lange nicht, dass dies großartiger Code ist. Ich habe genau diesen Code in Tonnen von Sprachen gesehen. Und was noch wichtiger ist, ich habe typsichere Implementierungen gesehen.
back2dos

@ back2dos: Dies ist typsicher.
Lennart Regebro

0

Lesen Sie dieses Buch Die Architektur von Open Source-Anwendungen . Es sollte Ihnen eine Kritik darüber geben, warum und wie die Entwurfsentscheidungen in den Projekten getroffen wurden, die im Buch diskutiert werden.

Anstatt nach dem Besten zu suchen, das Ihnen lange entgeht, versuchen Sie, die Gestaltung einiger Projekte zu schätzen, die möglicherweise über den Rahmen des Buches hinausgehen. Das könnte Ihnen helfen, auf den Erfolgen dieser Projekte aufzubauen, anstatt ihre Fehler zu wiederholen (oder, wie im Volksmund genannt, das Rad neu zu erfinden).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.