Apa kode Open Source terbaik yang pernah Anda lihat? [Tutup]

19

Bagian dari nilai Open Source adalah memberikan contoh kode yang bagus untuk orang-orang yang memulai dengan platform atau bahasa baru.

Apa kode Open Source terbaik yang pernah Anda temui, dan mengapa Anda menyukai pilihan Anda? Bahasa apa pun bisa digunakan, tetapi saya sangat tertarik dengan contoh-contoh terbaik Objective-C yang dapat Anda tunjukkan.

Jelas ini adalah pertanyaan terbuka, jadi saya akan membiarkan pertanyaan terbuka untuk sementara waktu dan melihat jawaban seperti apa yang kita dapatkan.

Terima kasih!

EDIT: Untuk "terbaik" saya memikirkan kode yang mengikuti idiom dalam bahasa atau platform yang diberikan, serta termasuk bagian-bagian yang membuat kode "profesional" - dokumentasi yang baik, suite pengujian, dll. Kode yang ringkas, tetapi tidak terlalu pintar lebih disukai untuk kode yang sangat singkat atau cerewet.

Andrew Theken
sumber
4
Adakah definisi khusus "terbaik" dalam pikiran?
Pertanyaan Anda agak luas. Mungkin Anda bisa mengeditnya agar lebih spesifik dan mendefinisikan apa arti "terbaik" bagi Anda. UI terbaik, aplikasi desktop / web / telepon terbaik, kode terbaik, kode visual terbaik?
Walter
+1 untuk pertanyaan yang bagus. Saya sarankan Anda memangkasnya ke beberapa bahasa / teknologi tertentu. Membandingkan C untuk Linux vs Java untuk driver database terus terang merupakan ide yang tidak konsisten.
Fanatic23
Akan sangat membantu orang lain yang membaca pertanyaan jika Anda mengedit klarifikasi itu. :)
Michael K

Jawaban:

14

Saya harus mengatakan bahwa setelah melihat sedikit kode sumber terbuka selama bertahun-tahun, saya sangat kecewa dengan semuanya.

Iritasi utama bagi saya adalah bahwa biasanya ada sangat sedikit komentar, seringkali satu-satunya komentar adalah pemberitahuan hak cipta yang panjang dan legalistik.

Kernel linux adalah contoh di mana file sering bahkan tidak memiliki komentar di dalamnya mengatakan tujuan apa yang mereka layani (misalnya driver untuk XYZ setidaknya akan memberitahu saya bahwa saya berada di tempat yang kira-kira tepat).

Saya datang dari pemrograman komersial dan pertahanan di mana standar pengkodean membutuhkan komentar yang masuk akal dan masuk akal, tidak hanya untuk mengatakan apa yang dilakukan unit kode, tetapi di seluruh kode harus ada blok komentar yang menggambarkan algoritma, metode, kekhasan, peretasan / hal-hal pintar , semua sehingga siapa pun yang datang setelah dapat melihat dan mencari tahu dengan cepat apa yang sedang dilakukan daripada dengan susah payah mengarungi kode yang sebenarnya.

Mungkin moralnya adalah: Katakan padaku apa yang kamu lakukan, jangan buat aku mencari tahu.

Saya belum menemukan kode sumber terbuka APA PUN yang melakukan ini dengan baik. Sejauh mencari open source sebagai cara belajar praktik pengkodean yang baik, saran saya tentang penyakit kuning adalah: Jangan.

dengan cepat_now
sumber
Saya setuju bahwa proyek-proyek sumber terbuka sering kurang berkomentar dan kurang terdokumentasi. Tapi mereka semua adalah sukarelawan. Sulit memotivasi sukarelawan untuk melakukan hal-hal yang tidak menyenangkan biasanya tanpa imbalan yang mereka cari (status, sosial, mencapai hal-hal hebat atau melakukan apa yang mereka sukai).
@ pierre303 - Saya mendirikan dan mengelola NoRMproject.org, Salah satu hal utama yang saya lakukan adalah menulis komentar ketika saya menulis kode, dan ini membantu. Saya pikir kontributor akan mengerjakan bagian-bagian yang ditekankan oleh para pemimpin. Dalam kasus NoRM, itu adalah kode Tes, Komentar, dan Idiomatik (ke c #). Saya pikir kami memiliki basis kode yang cukup profesional dan dapat dikelola.
Andrew Theken
Saya setuju bahwa komentar harus ditulis ketika kode sedang ditulis. (Saya juga melakukan ini dalam semua kode saya sendiri, terutama karena saya egois dan ini membantu saya untuk menulis narasi sebelum blok kode - ini menjelaskan dalam pikiran saya sendiri apa yang harus saya lakukan sebelum saya benar-benar melakukannya.)
quick_now
Mengingatkan saya pada kutipan lucu ini yang pernah saya temui: "Jika saya kesulitan menulisnya, mereka pasti akan kesulitan membacanya."
Denis de Bernardy
+1, @quickly_now - Anda berpikir bahwa kode harus direncanakan dengan baik, diuji dengan baik, dan sekarang dikomentari dengan baik! Planet gila macam apa yang kamu tinggali?
5

Saya telah mendengar hal-hal yang sangat baik tentang basis kode Sqlite .

Dari sedikit yang saya lihat, itu terlihat sangat bersih.

Oded
sumber
5
Ini juga memiliki rangkaian uji yang luas , menjadikannya model studi untuk pengujian perangkat lunak.
Robert Harvey
Saya hanya berharap itu memiliki antarmuka C ++: /
Matthieu M.
5

Donald Knuth menulis dua program untuk membantunya mengeset rumus matematika di buku-bukunya lebih baik daripada penerbitnya.

Kedua program ini (dalam versi finalnya) ditulis menggunakan Literate Programming yang memungkinkan untuk membuat versi kode sumber yang dicetak dan diketik, dan semuanya diterbitkan sebagai buku. Ini hanyalah program terdokumentasi terbaik yang pernah saya baca!

  • "Komputer & Pengaturan Huruf, Volume B: TeX: Program"
  • "Komputer & Pengaturan Huruf, Volume D: Metafont: Program"

Mereka tidak tersedia untuk dibaca online, tetapi Amazon memungkinkan Anda juga "Lihat ke dalam" buku Metafont di http://www.amazon.com/Computers-Typesetting-D-Metafont-Program/dp/0201134381/

Peringatan: Ini adalah hal yang berat, itulah sebabnya setiap buku memiliki 600 halaman.


sumber
1
Catatan: Ini adalah versi typeset yang tidak tersedia online. Sumber tersedia sepenuhnya, dan dapat - dengan sedikit usaha - digunakan untuk menghasilkan versi cetak.
4

Buku Beautiful Code mencoba menjawab pertanyaan ini dengan beberapa contoh tentang apa yang para kontributor anggap sebagai contoh kode indah dari proyek-proyek open source.
teks alternatif

Tangurena
sumber
4
Apakah buku ini layak dibaca?
Oliver Weiler
Namun ini bukan kode sumber terbuka "dunia nyata". Jawaban ini curang! : P
Noldorin
1
Saya memilikinya, tidak terkesan. Sebagian besar bab membosankan, tetapi ada beberapa highlight di dalamnya - peta / pengurangan dijelaskan jika saya ingat dengan benar.
Martin Wickman
4

CodeIgniter

Beberapa kode sumber terbersih dan terdokumentasi terbaik yang pernah saya lihat dari proyek OS.

Josh K.
sumber
1
php & terbersih?
Kugel
1
@ Kugel: Ya untuk keduanya.
Josh K
Baru saja melihat sumber ke CodeIgniter, dan memang tampak sangat terstruktur dan bersih. Saya pikir secantik Anda bisa dapatkan di php. :) Dan saya selalu suka humor dalam kode sumber: "// Belum ada DB yang ditentukan? Kalahkan mereka tidak masuk akal ... if (! Isset ($ params ['dbdriver'])) ..."
Bjarke Freund-Hansen
2
Saya memiliki mengintip di kode sumber dan saya harus mengakui itu didokumentasikan dengan baik dan mudah diikuti, dan saya tidak tidak mengharapkan itu dari OS PHP.
OnesimusUnbound
2
Kerangka kerja PHP OS hebat lainnya adalah fuelphp ( fuelphp.com ) yang juga didokumentasikan, ditata dengan rapi dan menggunakan konvensi penamaan yang tidak membuat Anda menarik rambut Anda. Itu hanya membuktikan itu bukan PHP yang harus disalahkan untuk kode spaghetti, biasanya orang-orang yang menulis kode.
Michael JV
3

Saya telah melihat 2 proyek yang terstruktur dengan sangat baik:

  1. Django
  2. Proyek kromium

Terutama, yang kedua sangat menarik berdasarkan beberapa hal:

  • Bagaimana cara menggunakan proses untuk banyak hal (tab, plug-in) dan bagaimana itu cocok bersama
  • multi-platform dengan GUI asli untuk setiap Windows, Mac, Linux
  • integrasi web-kit

Saya juga mendengar Postgre ditulis dengan rapi (bukan MySql), tetapi saya belum membacanya sendiri.

Kugel
sumber
1
+1 untuk kode PostgreSQL. Ini sangat bersih dan mudah dibaca.
Denis de Bernardy
2

Ada yang mengatakan kode C untuk Kernel Linux sangat bagus.

(Bukannya saya mengerti masalahnya! Ini mungkin proyek open-source C terbaik yang ditulis di sekitar.)

Noldorin
sumber
1
Untuk kode yang dioptimalkan sangat bagus. Untuk keterbacaan tidak begitu baik, dalam pengalaman saya. Tentu saja, saya belum menulis apa pun, baca saja ...
Michael K
1
Ya benar. Sayangnya pertanyaannya tidak benar-benar mendefinisikan "terbaik", jadi saya mengambil definisi saya sendiri. :)
Noldorin
2

Saya menemukan kode sumber LLVM sangat mudah dibaca. Saya cukup yakin itu adalah C ++ terbersih yang pernah saya lihat. Jika Anda tidak terbiasa dengan itu, pada dasarnya ini adalah toolkit konstruksi penyusun.

  • Ini memiliki test suite yang luas. Yah sebenarnya, ia memiliki setidaknya dua: satu set untuk fitur pengujian dan satu untuk menguji kinerja (dari LLVM itu sendiri serta program yang dikompilasi yang dihasilkannya).
  • Kode ini dikomentari dengan baik.
  • Kode yang sangat berulang (seperti instruksi yang cocok di berbagai backend) dihasilkan secara otomatis dari deskripsi DSL tingkat tinggi (disebut TableGen).
    • Ini juga memungkinkan beberapa potongan kode terpisah dihasilkan dari deskripsi yang sama. Sebagai contoh, spesifikasi backend digunakan sebagai bagian dari backend compiler, tetapi juga untuk assembler dan disassembler.
  • Ini memiliki dokumentasi yang cukup bagus.

Ini adalah proyek yang cukup besar, jadi jangan berharap untuk dapat dengan cepat memahami dengan tepat bagaimana semuanya bekerja. Tetapi seharusnya cukup mudah untuk mendapatkan gambaran tingkat tinggi.

Frits
sumber
1

Ini bukan proyek besar, tetapi ORM SubSonic sangat mudah bagi saya untuk meretas. Itu adalah proyek open source nyata pertama yang saya bisa modifikasi persis seperti yang saya butuhkan. Sebagian besar yang lain saya akhirnya melihat sumber dan membenturkan kepala saya ke dinding. Saya sudah mendukung sebagian PostgreSQL (mendasarkannya pada hal penyedia SQL Server) dalam beberapa jam. Ini adalah proyek yang paling terorganisir yang pernah saya lihat ... walaupun tidak berarti saya telah melihat banyak proyek sumber terbuka.

Earlz
sumber
0

Pertama contoh sederhana: Kode untuk event handling system zope.event. Saya telah menggunakan sistem acara lainnya, yang mengirimkan acara ke pendengar acara yang berbeda. Ketika saya melihat kode zope.event itu adalah waktu facepalm, ketika saya menyadari betapa sederhananya beberapa hal.

Ini ditulis dengan Python, dan ini adalah kode keseluruhannya:

subscribers = []

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

Untuk menambahkan pelanggan, Anda melakukan ini:

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

Contoh terbaik KISS yang pernah saya lihat.

Kemudian contoh yang lebih kompleks: Basis kode Mars sangat bagus dan mudah dibaca, meskipun menggunakan beberapa peretas Python yang pintar. Hal yang sama berlaku untuk sebagian besar kode Grok, yang dibangun menggunakan Mars.

Lennart Regebro
sumber
3
Saya tidak mengerti apa yang hebat dengan kode ini. Saya tidak tahu python, tapi saya hanya bisa melihat penggunaan sederhana pola pengamat di sini, dan tidak ada yang lain.
barjak
Sudahkah Anda membandingkannya dengan sistem acara lainnya? Untuk kesederhanaan, ambil contoh Python lainnya: pypi.python.org/pypi/pyjon.events/1.1.1
Lennart Regebro
1
Cantik - Saya benar-benar menulis sesuatu yang sangat mirip dalam javascript. Saya kira saya pintar? ;)
Michael K
Hanya karena ada sistem acara yang jauh lebih buruk, bukan berarti ini adalah kode yang hebat. Saya melihat persis kode ini dalam banyak bahasa. Dan yang lebih penting, saya melihat implementasi tipe aman.
back2dos
@ back2dos: Ini adalah tipe aman.
Lennart Regebro
0

Pertimbangkan membaca buku ini Arsitektur Aplikasi Sumber Terbuka . Ini harus memberi Anda kritik tentang mengapa dan bagaimana keputusan desain dibuat dalam proyek yang dibahas dalam buku ini.

Alih-alih mencari yang terbaik, yang dapat menghindari Anda lama, cobalah dan hargai desain beberapa proyek, mungkin di luar ruang lingkup buku ini. Itu bisa membantu Anda membangun keberhasilan proyek-proyek ini alih-alih mengulangi kesalahan mereka (atau, demikian populer disebut, menciptakan kembali roda).

vpit3833
sumber