Jaki jest najlepszy kod Open Source, jaki kiedykolwiek widziałeś? [Zamknięte]

19

Częścią wartości Open Source jest zapewnienie świetnego przykładowego kodu osobom rozpoczynającym pracę z nową platformą lub językiem.

Jaki jest najlepszy kod Open Source już napotkał i dlaczego lubisz swój wybór? Zna każdy język, ale szczególnie interesują mnie najlepsze przykłady Objective-C, na które możesz wskazać.

Oczywiście jest to pytanie otwarte, więc zostawię pytanie otwarte i zobaczę, jakie odpowiedzi otrzymamy.

Dzięki!

EDYCJA: Dla „najlepszego” myślałem o kodzie zgodnym z idiomami w danym języku lub platformie, a także o częściach, które czynią kod „profesjonalnym” - dobra dokumentacja, pakiet testowy itp. Kod, który jest zwięzły, ale niezbyt mądry korzystnie bardzo zwięzłe lub kod rozmowny.

Andrew Theken
źródło
4
Masz na myśli jakąś konkretną definicję „najlepszego”?
Twoje pytanie jest nieco ogólne. Być może uda się go zmienić, by być bardziej konkretny i określić, co „najlepsze” oznacza dla ciebie. Najlepszy interfejs użytkownika, najlepsza aplikacja komputerowa / internetowa / telefoniczna, najlepsza współbieżność, najlepszy wizualnie atrakcyjny kod?
Walter
+1 za dobre pytanie. Proponuję przyciąć go do jakiegoś konkretnego języka / technologii. Porównanie C dla Linuxa i Javy dla sterownika bazy danych jest szczerze mówiąc niespójnym pomysłem.
Fanatic23
Byłoby bardzo pomocne dla innych osób czytających pytanie, gdybyś zredagował to wyjaśnienie. :)
Michael K

Odpowiedzi:

14

Muszę powiedzieć, że po spojrzał na bitach kodu open source, na przestrzeni lat, byłem ogromnie rozczarowany prawie wszystko.

Główną irytacją dla mnie jest to, że zwykle jest bardzo mało komentarzy, często jedynymi komentarzami są długie i legalne informacje o prawach autorskich.

Jądro Linux jest przykładem, w którym pliki często nie mają nawet komentarz w nich mówiąc jakiemu celowi służą (np sterownik XYZ będzie przynajmniej powiedzieć mi, że jestem w przybliżeniu właściwym miejscu).

Doszedłem z programowaniem komercyjnym i obrony, gdzie standardy kodowania wymaga sensownych komentarzy zrozumiałe nie tylko powiedzieć, co robi zespół kod, ale przez cały kod musi istnieć bloki komentarze opisujące algorytmów, metod, osobliwości, hacki / sprytnych rzeczy , wszystko po to, aby każdy, kto przyjdzie za nim, mógł SZYBKO rozejrzeć się i dowiedzieć, co się dzieje, a nie przez staranne branie w głąb rzeczywistego kodu.

Może morał brzmi: Powiedz mi, co robisz, dont make me zrozumieć.

Nie znalazłem ŻADNEGO kodu open source, który działałby tak dobrze. O ile patrząc na open source jako sposobu uczenia się dobrych praktyk kodowania, moja rada jest jaundiced: Nie.

szybko. teraz
źródło
Zgadzam się, że projekty open source są często źle komentowane i źle udokumentowane. Ale wszyscy są wolontariusze. Trudno wolontariuszy motywować robić nieprzyjemne rzeczy zwykle bez nagrody, których szukasz (statusu społecznego, osiągnięcie wspaniałych rzeczy lub robią to, co kochają).
@ pierre303 - założyłem i utrzymać NoRMproject.org, jeden z głównych rzeczy, które mogę zrobić, to komentarze napisz kiedy piszę kod, a to pomaga. Myślę, że autorzy będą pracować nad częściami, które podkreślają liderzy. W przypadku normą, która była Testy, komentarze i Idiomatic (C #) do kodu. Myślę, że dzięki temu mamy dość profesjonalną, łatwą w utrzymaniu bazę kodów.
Andrew Theken,
Zgadzam się, że komentarze powinny być pisane podczas pisania kodu. (I również to zrobić w całym moim własnym kodem, głównie dlatego, że jestem samolubny i to pomaga mi napisać opowiadanie przed blokiem kodu. - wyjaśnia w moim umyśle, co muszę zrobić, zanim rzeczywiście to zrobić)
szybko_nie
Przypomina mi tej zabawnej cytatem Kiedyś natknąłem się: „Gdybym miał twardy czas pisania, powinny one mieć trudności z odczytaniem.”
Denis de Bernardy
+1, @quickly_now - myślisz, że kod powinien być dobrze zaplanowane, dobrze przetestowane i teraz dobrze skomentowany! Jaki rodzaj szalonej planecie żyjesz dalej?
5

Słyszałem bardzo dobre rzeczy o SQLite kodzie.

Od małego I wyglądało na to, że wygląda bardzo czyste.

Oded
źródło
5
Posiada również bogaty zestaw testów , dzięki czemu model badania do testowania oprogramowania.
Robert Harvey
I tylko szkoda, że nie miał C ++ interfejs: /
Matthieu M.
5

Donald Knuth napisał dwa programy, aby pomóc mu przygotowana jego formuł matematycznych w swoich książkach lepiej niż jego wydawca mógł.

Te dwa programy (w ostatecznej wersji) został napisany przy użyciu literat Programowanie co pozwoliło na stworzenie wersji drukowanej, typeset kodu źródłowego, a zostały one opublikowane jako książki. Są to po prostu najlepiej udokumentowanych programów, jakie kiedykolwiek czytałem!

  • "Komputery i składu, Tom B: TeX: Program"
  • „Komputery i Skład, tom D: Metafonta: Program”

Nie są one dostępne do czytania online, ale Amazon również pozwala ci „zajrzeć do środka” książki Metafont pod adresem http://www.amazon.com/Computers-Typesetting-D-Metafont-Program/dp/0201134381/

Ostrzeżenie: To jest ciężkie rzeczy, dlatego każda książka działa na 600 stron.


źródło
1
Uwaga: To jest przygotowana wersja, która nie jest dostępna w Internecie. Źródłem jest w pełni dostępny i może - z małym żadnego wysiłku być używany do generowania wersji drukowanej.
4

Książka Piękna Kodeks stara się odpowiedzieć na to pytanie z kilkoma próbkami co myśleć współpracownicy są egzemplarze pięknego kodu z projektów open source.
alternatywny tekst

Tangurena
źródło
4
Jest warta książka sprawdzanie?
Oliver Weiler
W żadnym wypadku nie jest to jednak kod typu „open source” w „prawdziwym świecie”. Ta odpowiedź jest oszustwo! : P
Noldorin
1
Posiadam go, nie był pod wrażeniem. Większość rozdziałów jest nudna, ale jest w niej kilka najważniejszych wydarzeń - mapa / redukcja jest wyjaśniona, jeśli dobrze pamiętam.
Martin Wickman
4

CodeIgniter

Niektóre z najczystszych, najlepiej udokumentowanym kodem źródłowym widziałem od projektu OS.

Josh K.
źródło
1
php i najczystszy?
Kugel
1
@Kugel: Tak do obu.
Josh K
Po prostu miał spojrzeć na źródła do CodeIgniter, i to rzeczywiście wydaje się bardzo dobrze zorganizowany i czyste. Myślę, że tak pięknie możesz dostać php. :) I zawsze lubiłem humor w kodzie źródłowym: „// Nie określono jeszcze DB? Pokonaj ich bezsensownie ... if (! Isset ($ params ['dbdriver']) ... ...”
Bjarke Freund-Hansen
2
Miałem okiem na kodzie źródłowym i muszę przyznać, że było dobrze udokumentowane i łatwe do naśladowania, i nie należy spodziewać się z OS PHP.
OnesimusUnbound
2
Kolejną wielką ramy OS PHP jest fuelphp ( fuelphp.com ), który jest także udokumentowana, rozplanowany czysto i zastosowania konwencji nazewnictwa, które nie sprawiają, że można wyciągnąć swoje włosy. Że tylko dowodzi, że nie jest winien PHP kodu spaghetti, to zwykle ludzie piszący kod.
Michael JV,
3

Widziałem 2 projekty o bardzo dobrej strukturze:

  1. Django
  2. projekt chrom

Szczególnie drugi jest bardzo interesujący w oparciu o kilka rzeczy:

  • Jak wykorzystuje procesy do wielu rzeczy (kartach plug-ins) i jak to pasuje do siebie
  • wieloplatformowy z native GUI dla każdego systemu Windows, Mac, Linux
  • integracja web-kit

Również słyszałem Postgre jest napisane czysto (w przeciwieństwie do MySQL), ale ja jej nie czytać siebie.

Kugel
źródło
1
+1 dla kodu PostgreSQL. Jest to bardzo czyste i czytelne.
Denis de Bernardy
2

Niektórzy twierdzą, że kod C dla jądra Linuksa jest naprawdę dobry.

(Nie, że rozumiem rzecz! To prawdopodobnie najlepszy napisany projekt open-source C ok.)

Noldorin
źródło
1
Zoptymalizowany kod jest świetny. Z mojego doświadczenia wynika, że ​​czytelność nie jest tak dobra. Oczywiście, nie mam napisane w ogóle, tylko czytać ...
Michael K
1
Tak prawda. Niestety kwestia tak naprawdę nie definiują „najlepszy”, więc biorę moją własną definicję. :)
Noldorin
2

Odkryłem, że kod źródłowy LLVM jest bardzo czytelny. Jestem prawie pewien, że to najczystszy C ++, jaki widziałem. Jeśli nie jesteś zaznajomiony z nim, to w zasadzie zestaw narzędzi budowlanych kompilator.

  • Ma obszerny zestaw testów. No faktycznie, ma przynajmniej dwa: jeden zestaw do testowania funkcji i jeden dla testowania wydajności (z LLVM samego, jak i skompilowanych programów generuje).
  • Kod jest dobrze skomentował.
  • Kod wysoce powtarzalne (takich jak dopasowywanie instrukcja w różnych backendów) jest automatycznie generowana z DSL nadrzędnego (tzw TableGen) opis.
    • Pozwala to również wiele rozłącznych kawałki kodu, aby być generowane z tego samego opisu. Na przykład, opis narzędzie nie jest stosowany jako część backend kompilatora, ale także dla montażystów i deasembler.
  • Ma całkiem dobrą dokumentację.

Jest to dość duży projekt, choć, więc nie należy się spodziewać, aby być w stanie szybko zrozumieć dokładnie, jak wszystko działa. Ale to powinno być dość łatwo dostać przegląd wysokiego poziomu.

Frytki
źródło
1

To nie jest duży projekt, ale SubSonic ORM był dla mnie niezwykle łatwy do zhakowania. Był to pierwszy prawdziwy projekt open source, który mogłem zmodyfikować dokładnie tak, jak potrzebowałem. Większość innych skończyło się na spojrzeniu na źródło i uderzeniu głową w ścianę. Mam go częściowo obsługującego PostgreSQL (w oparciu o dostawcę SQL Server) w ciągu kilku godzin. To najlepiej zorganizowany projekt, jaki widziałem ... chociaż nie wspominając, że obejrzałem wiele projektów typu open source.

Earlz
źródło
0

Najpierw prosty przykład: kod systemu obsługi zdarzeń zope.event. Użyłem innych systemów zdarzeń, które wysyłały zdarzenia do różnych detektorów zdarzeń. Kiedy zobaczyłem kod zope.event, nadszedł czas na twarz, kiedy zdałem sobie sprawę, jak proste mogą być niektóre rzeczy.

Jest napisany w Pythonie, a tutaj jest cały kod:

subscribers = []

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

Aby dodać subskrybenta, wykonaj następujące czynności:

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

Najlepszy przykład KISS, jaki widziałem.

Wtedy bardziej skomplikowany przykład: marsjańska baza kodu jest bardzo miły i łatwy do odczytania, nawet jeśli jest to za pomocą kilku sprytnych hacki Python. To samo dotyczy większości kodu Grok, który jest zbudowany przy użyciu Marsa.

Lennart Regebro
źródło
3
Nie rozumiem, co jest super z tym kodem. Nie znam pytona, ale widzę tutaj tylko proste użycie wzorca obserwatora i nic więcej.
barjak
Czy w porównaniu z innymi systemami wydarzenie? Dla uproszczenia Weźmy inny przykład Python: pypi.python.org/pypi/pyjon.events/1.1.1
Lennart Regebro
1
Beautiful - I rzeczywiście napisał coś bardzo podobne w JavaScript. Chyba jestem mądra? ;)
Michael K
Tylko dlatego, że nie ma systemów zdarzeń, które są znacznie gorsze, nie znaczy to jest wielki kod. Widziałem dokładnie ten kod w ton językach. I co ważniejsze, widziałem wpisać bezpiecznych implementacje.
back2dos
@ back2dos: Jest to rodzaj bezpieczne.
Lennart Regebro
0

Rozważmy przeczytaniu tej książki architektura open source . Powinno to dać krytykę jak i dlaczego decyzje projektowe zostały wykonane w ramach projektów, które zostały omówione w książce.

Zamiast szukać najlepszych, które mogą Cię długo nie umykać, spróbuj docenić projekt niektórych projektów, być może wykraczający poza zakres książki. To może pomóc w budowaniu sukcesów tych projektów zamiast powtarzania ich błędów (lub, jak to się powszechnie nazywa, wymyślania koła na nowo).

vpit3833
źródło