Gördüğünüz en iyi Açık Kaynak kodu nedir? [kapalı]


19

Açık Kaynak değerinin bir kısmı, yeni bir platform veya dil ile başlayan kişilere mükemmel örnek kod sağlamaktır.

Karşılaştığınız en iyi Açık Kaynak kodu nedir ve neden seçiminizi beğendiniz? Herhangi bir dil yapacaktır, ancak özellikle dikkat çekebileceğiniz en iyi Objective-C örnekleri ile ilgileniyorum.

Açıkçası bu açık uçlu bir soru, bu yüzden soruyu bir süre açık bırakacağım ve ne tür cevaplar aldığımızı göreceğim.

Teşekkürler!

DÜZENLEME: "En iyi" için ben verilen dil veya platformda deyimleri izleyen kodu yanı sıra "profesyonel" kod yapma parçaları dahil düşünüyordum - iyi belgeler, bir test paketi, vb. Özlü kod, ama çok zekice veya konuşkan kod için aşırı zekice tercih edilmez.


4
Akılda "en iyi" herhangi bir özel tanımı?

Sorunuz biraz geniş. Belki daha spesifik olacak şekilde düzenleyebilir ve "en iyi" nin sizin için ne anlama geldiğini tanımlayabilirsiniz. En iyi kullanıcı arayüzü, en iyi masaüstü / web / telefon uygulaması, en iyi uyumluluk, en iyi görsel olarak çekici kod?
Walter

İyi bir soru için +1. Belirli bir dile / teknolojiye bulaştırmanızı öneririm. Linux için C ve veritabanı sürücüsü için Java karşılaştırması açıkçası tutarsız bir fikirdir.
Fanatic23

Bu açıklamayı düzenlediyseniz, soruyu okuyan diğer insanlar için çok yararlı olacaktır. :)
Michael K

Yanıtlar:


14

Yıllar boyunca açık kaynak kod parçalarına baktığımda, hemen hemen tümüyle hayal kırıklığına uğradım.

Benim için asıl tahriş, genellikle çok az yorum olması, sıklıkla sadece yorumların uzun ve yasal bir telif hakkı uyarısı olmasıdır.

Linux çekirdeği, dosyaların sıklıkla hangi amaca hizmet ettiklerini söyleyen bir yorumu olmadığı bir örnektir (örneğin, XYZ için sürücü en azından kabaca doğru yerde olduğumu söyler).

Kodlama standartlarının sadece bir kod biriminin ne yaptığını söylemek için mantıklı anlaşılır yorumlar gerektirdiği ticari ve savunma programlarından geldim, ancak kod aracılığıyla algoritmaları, yöntemleri, özellikleri, hackleri / akıllı şeyleri tanımlayan yorum blokları olmalı Böylece, her kim gelirse, gerçek kodda titizlikle dolaşmak yerine ne yapıldığını HIZLI olarak görebilir ve anlayabilir.

Belki de ahlaki: Bana ne yaptığını söyle, anlamama izin verme.

Bunu iyi yapan herhangi bir açık kaynak kodu bulamadım. İyi kodlama uygulamalarını öğrenmenin bir aracı olarak açık kaynak aramaya gelince, sarılık tavsiyem: Yapmayın.


Açık kaynaklı projelerin genellikle kötü yorumlandığını ve kötü belgelendiğini kabul ediyorum. Ama hepsi gönüllü. Gönüllüleri genellikle aradıkları ödül olmadan tatsız şeyler yapmaya motive etmek zordur (statü, sosyal, harika şeyler başarmak veya sevdiklerini yapmak).

@ pierre303 - NoRMproject.org'u kurdum ve sürdürdüm, Yaptığım en önemli şeylerden biri kodu yazarken yorum yazmak ve bu yardımcı oluyor. Katkıda bulunanların liderlerin vurguladığı parçalar üzerinde çalışacaklarını düşünüyorum. NoRM durumunda, bu Testler, Yorumlar ve Deyimsel (c #) kodu idi. Bence oldukça profesyonel, bakımı kolay bir kod tabanımız var.
Andrew Theken

Kod yazılırken yorumların yazılması gerektiğini kabul ediyorum. (Bunu kendi kodumda da yapıyorum, esas olarak bencil olduğum için ve kod bloğundan önce bir anlatı yazmama yardımcı oluyor - aslında yapmadan önce ne yapmam gerektiğini açıklıyor.)
quickly_now

Bir zamanlar karşılaştığım bu komik alıntıyı hatırlatıyor: "Yazarken zorlandım, okumakta zorlanmalılar."
Denis de Bernardy

+1, @quickly_now - kodun iyi planlanması, iyi test edilmesi ve şimdi iyi yorumlanması gerektiğini düşünüyorsunuz ! Ne tür bir çılgın gezegen üzerinde yaşıyorsunuz?


5

Donald Knuth, matematiksel formüllerini kitaplarında yayıncısından daha iyi yazmasına yardımcı olmak için iki program yazdı.

Bu iki program (son sürümlerinde), kaynak kodun basılı, dizilmiş bir versiyonunu oluşturmaya izin veren Literate Programming kullanılarak yazılmıştır ve bunlar kitap olarak yayınlanmıştır. Bunlar şimdiye kadar okuduğum en iyi belgelenmiş programlardır!

  • "Bilgisayarlar ve Dizgi Oluşturma, Cilt B: TeX: Program"
  • "Bilgisayarlar ve Dizgi Oluşturma, Cilt D: Metafont: Program"

Çevrimiçi okuma için kullanılamazlar, ancak Amazon size http://www.amazon.com/Computers-Typesetting-D-Metafont-Program/dp/0201134381/ adresindeki Metafont kitabını da "İçine Bak" olanağı veriyor.

Uyarı: Ağır şeylerdir, bu yüzden her kitap 600 sayfada çalışır.


1
Not: Çevrimiçi olarak bulunmayan dizgi sürümüdür. Kaynak tamamen kullanılabilir ve basılı sürümü oluşturmak için - küçük bir çaba ile - kullanılabilir.

4

Güzel Kod kitabı bu soruyu katkıda bulunanların açık kaynak projelerinden güzel kodun örnekleri olduğunu düşündüklerinin birkaç örneğiyle cevaplamaya çalışmaktadır.
alternatif metin


4
Kitap incelemeye değer mi?
Oliver Weiler

Bu hiçbir şekilde "gerçek dünya" açık kaynak kodu değildir. Bu cevap aldatıyor! : P
Noldorin

1
Ben sahibim, etkilenmedim. Bölümlerin çoğu sıkıcı, ancak içinde birkaç önemli nokta var - doğru hatırlarsam harita / azaltma açıklanır.
Martin Wickman

4

CodeIgniter

Bir işletim sistemi projesinde gördüğüm en temiz, en iyi belgelenmiş kaynak kodlarından bazıları.


1
php & temiz?
Kugel

1
@Kugel: Her ikisine de evet.
Josh K

Sadece CodeIgniter kaynağına bir göz vardı ve gerçekten çok iyi yapılandırılmış ve temiz görünüyor. Sana php alabilirsiniz gibi güzel düşünüyorum. :) Ve her zaman kaynak kodunda mizah sevdim: "// Henüz DB belirtilmedi? Anlamsız onları yendi ... eğer (! İsset ($ params ['dbdriver']) ..."
Bjarke Freund-Hansen

2
Ben kaynak koduna bir göz vardı ve ben iyi belgelenmiş ve kolay takip etmek itiraf etmeliyim, ben yaptım bir işletim sistemi PHP onu beklemeyin.
OnesimusUnbound

2
Bir diğer harika OS PHP çerçevesi de belgelenmiştir, temiz bir şekilde düzenlenmiştir ve saçınızı çekmenize neden olmayan adlandırma kurallarını kullanan fuelphp'dir ( fuelphp.com ). Bu sadece spagetti kodu için suçlama PHP olmadığını kanıtlar, genellikle kodu yazan insanlar.
Michael JV

3

Çok iyi yapılandırılmış 2 proje gördüm:

  1. Django
  2. Krom projesi

Özellikle, ikincisi birkaç şeye dayanarak çok ilginç:

  • Birçok şey için işlemleri nasıl kullanır (sekmeler, eklentiler) ve birbirine nasıl uyar
  • her Windows, Mac, Linux için yerel GUI'ye sahip çoklu platform
  • web kiti entegrasyonu

Ayrıca Postgre'nin temiz yazıldığını duydum (MySql'in aksine), ama kendim okumadım.


1
PostgreSQL kodu için +1. Son derece temiz ve okunabilir.
Denis de Bernardy

2

Bazıları Linux Çekirdeği için C kodunun oldukça iyi olduğunu söylüyor .

(Anladığım kadarıyla değil! Muhtemelen en iyi yazılmış açık kaynaklı C projesi.)


1
Optimize edilmiş kod için harika. Okunabilirlik için o kadar iyi değil, benim deneyimime göre. Tabii ki, hiç yazmadım , sadece okudum ...
Michael K

1
Evet doğru. Maalesef soru gerçekten "en iyi" yi tanımlamadı, bu yüzden kendi tanımımı alıyorum :)
Noldorin

2

LLVM kaynak kodunun çok okunabilir olduğunu gördüm . Eminim gördüğüm en temiz C ++. Buna aşina değilseniz, temel olarak bir derleyici inşaat araç takımıdır.

  • Kapsamlı bir test paketi vardır. Aslında en az iki tane var: test özellikleri için bir set ve performansı test etmek için bir set (LLVM'nin kendisi ve oluşturduğu derlenmiş programlar).
  • Kod iyi yorumlanmıştır.
  • Yüksek düzeyde tekrarlanan kod (çeşitli arka uçlarda talimat eşleştirme gibi), daha yüksek düzeyli bir DSL (TableGen olarak adlandırılır) tanımından otomatik olarak oluşturulur.
    • Bu aynı zamanda, birden fazla ayrık kod parçasının aynı açıklamadan üretilmesine izin verir. Örneğin, arka uç spesifikasyonu bir derleyici arka ucunun parçası olarak kullanılır, aynı zamanda montajcılar ve sökücüler için de kullanılır.
  • Oldukça iyi belgelere sahip.

Bu oldukça büyük bir proje, bu yüzden her şeyin nasıl çalıştığını hızlı bir şekilde anlayabilmeyi beklemeyin. Ancak, üst düzey bir genel bakış elde etmek oldukça kolay olmalıdır.


1

Bu büyük bir proje değil, ama SubSonic ORM'yi kesmek benim için son derece kolaydı. Tam olarak ihtiyacım olanı değiştirebildiğim ilk gerçek açık kaynaklı projeydi. Diğerlerinin çoğunu kaynağa baktım ve kafamı duvara vurdum. Ben kısmen PostgreSQL (SQL Server sağlayıcı şey dayalı) birkaç saat içinde destek vardı. Şimdiye kadar gördüğüm en iyi organize edilmiş proje ... birçok açık kaynak projesine baktığımı söylememe rağmen.


0

İlk olarak basit bir örnek: Olay işleme sistemi zope.event için kod. Olayları farklı olay dinleyicilerine gönderen başka olay sistemleri kullanmıştım. Zope.event kodunu gördüğümde, bazı şeylerin ne kadar basit olabileceğini anladığımda facepalm zamanıydı.

Python ile yazılmış ve işte kodun tamamı:

subscribers = []

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

Abone eklemek için bunu yaparsınız:

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

Gördüğüm en iyi KISS örneği.

Daha karmaşık bir örnek: Mars kod tabanı, bazı akıllı Python kesmek kullanıyor olsa da, çok güzel ve okunması kolay. Aynı şey Marslı kullanılarak yapılan Grok kodunun çoğu için de geçerlidir.


3
Bu kodla neyin harika olduğunu anlamıyorum. Python bilmiyorum, ama burada sadece gözlemci modelinin basit bir kullanımını görebiliyorum ve başka bir şey göremiyorum.
barjak

Diğer olay sistemleriyle karşılaştırdınız mı? Basitlik için başka bir Python örneği alın: pypi.python.org/pypi/pyjon.events/1.1.1
Lennart Regebro

1
Güzel - Aslında javascript'te çok benzer bir şey yazdım. Sanırım akıllıyım? ;)
Michael K

Çok daha kötü olay sistemleri olması, bunun harika bir kod olduğu anlamına gelmez. Bu kodu tonlarca dilde gördüm. Ve daha da önemlisi, tip güvenli uygulamalar gördüm.
back2dos

@ back2dos: Bu tür güvenlidir.
Lennart Regebro

0

Açık Kaynak Uygulamalarının Mimarisi adlı bu kitabı okumayı düşünün . Kitapta tartışılan projelerde tasarım kararlarının neden ve nasıl verildiğine dair bir eleştiri vermelidir.

Sizi uzun süre atlatabilecek en iyisini aramak yerine, belki de kitabın kapsamı dışında bazı projelerin tasarımını takdir etmeye çalışın. Bu, hatalarını tekrarlamak (veya popüler olarak adlandırıldığı gibi, tekerleği yeniden keşfetmek) yerine bu projelerin başarılarını geliştirmenize yardımcı olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.