Kaynak kodun iyi örneklerini nereden okuyacaksınız? [kapalı]


53

Birkaç kişinin kodlama yeteneğinizi geliştirmenin en iyi yollarından birinin başkalarının kodunu okumak ve anlamak olduğunu söylediğini duydum. Benim sorum, nispeten yeni bir programcı olarak, kafamın çok üzerinde olmayan iyi kaynak kodu örnekleri bulabilirim?


Bu, StackOverflow'ta istendi: stackoverflow.com/questions/3083525/…
nikie

3
Sadece eski koduma bakıyorum.
Paul

Paul, bu OP'ye yardım etmeyecek, değil mi? Açıkçası, zaten geçmişte yazılmış iyi bir kod yok. sheesh.
Junky

2
@junky umarım onlar biraz mizah duygusu var :)
Konrad Morawski

soracağım soru bu, ama buldum ki benim iyi şansım. bu sadece kodları nerede bulacağımı bilmediğimin bir sorun olduğunu düşündüm
Dhananjay

Yanıtlar:


30

GitHub , Codeplex , Google Code veya BitBucket gibi depo sitelerinde açık kaynaklı projelere göz atabilirsiniz . Farklı karmaşıklık seviyelerinde projeler bulacaksınız, bu nedenle hem sizi ilgilendiren hem de ilk başta çok fazla aklınıza gelmeyen bir şey bulabilmelisiniz.

Diğer bir seçenek Scott Hanselman'ın Haftalık Kaynak Kodu blog yazısıdır .

Henüz kullanımda ve incelemede bulunmayan kodu okumaya başlama olasılığını azaltmak için kurulmuş, aktif bir projeyle başlamanızı öneririm. İdeal olarak, sizi ilgilendiren ve kullanabileceğiniz bir şey bulun. Uygulamayı kullanmak kaynak kodunu anlamanıza yardımcı olacaktır. Açık kaynak kodlu bir proje seçmenin bir başka yararı da, kod üzerinden okumayı daha ilginç hale getirmeye yardımcı olacak bazı düzeltmelere veya özelliklere katkıda bulunabilmeniz olabilir.

Bir başkasının kodunun bir demetine bakmak korkutucu olabilir, bu nedenle mainfonksiyona (veya eşdeğerine) başlayın ve oradan ilerleyin.


3
-1: bir acemi iyi ve kötü kod arasında söyleyemez, bu yüzden 'göz atma' projelerinin yardımı olmaz. Bunu 'kurulmuş' projeler önererek ele aldınız, ancak hepimizin duyduğu projelerde berbat bir kod gördüm. Yine de daha iyi bir cevabım yok. Aslında zor bir soru, bireyin yetenek seviyelerine, ilgi alanlarına göre uyarlanmış ve bir mentorun bilgisine göre filtrelenmiş bir cevaba ihtiyaç duyuyor.
Cris

1
@ Cris katılmıyorum, ama aynı zamanda kötü kod okumayı öğrenecek çok şey olduğunu da not edeceğim. Tartışmalı olarak, kötü kodları okumak ve takip etmek, düzgün organize edilmiş bir projeye dalmaktan bile daha zordur. (Ve bu "iyi" kodun ne olduğunu bulmaya başlamadan önce. :))
Adam Lear

1
yeterince doğru. Ancak çoğumuz dahi olmayanlar için, öz-eğitimin sınırları vardır. (Her alanda) En yeni başlayanlar ne bir fikir edinmesini "iyi" maruz kalma ihtiyaç olduğunu iyi. Ve "İnternet", yardım etmeyen, "Ben iyiyim!" Dünyasının yaratıcısıdır.
Cris

10

Çok az insan ilk denemelerinde iyi bir kaynak kodu yazar. İyi kaynak kodu genellikle bir dizi revizyon tarafından üretilir. Bu nedenle, birden çok kez incelenen ve birden çok kez düzeltilen eş kodunu bulabilirseniz, muhtemelen daha iyi bir konumdasınız demektir. Bazı açık kaynaklı projeler (ve bunların bazı kısımları) özellikle iyi incelenmiştir. Zorunlu inceleme döngülerine sahip şirketlerden gelen kod (ör. Google, ancak diğerleri var) faturaya uygun olabilir.

Olduğu söyleniyor, amacınızın "harika kod" bulmak zorunda olduğundan emin değilim. Farklı kod stillerine (çalışma arkadaşlarınız tarafından yazılmışlar gibi) bakmak ve bu konuda iyi ve kötü noktaları tanımlamayı öğrenmek gerekir. Ne kadar kötü puan belirlerseniz, kodunuzu daha iyi hale getirmek ve nasıl yapılacağını bilmek için o kadar çok çaba harcarsınız.

Özellikle, iyi bir kod anlayışı elde etmek için çok iyi bir yaklaşımın, çağrı zincirlerini izleyerek karmaşık kodun izini sürmek için etkileşimli hata ayıklayıcısını kullanmak olduğuna inanıyorum. Örneğin, şirketinizin ana dosyalarından birine gidin, bir kesme noktası ekleyin ve onlardan bir şeyler bulmaya başlayın.

Birkaç kez 100 küreye sahip fonksiyonlarla, on dereceli girintiler ve küresel bağımlılıklara bağımlılıktan bıkmış olursunuz ve birkaç kez iyi ayrışmış kodlardan esinlendikten sonra, kendi programlamanızı geliştirirsiniz.


4

Harika kodlar bulmak yerine, Genel Programlama Kitaplarına bakın.

örneğin Kod Tamamlandı, katı kod yazma, Tasarım Desenleri (Bu sitede başka bir soruda ve kitapta birçok kitap olduğundan eminim)

Bu kitaplar iyi kod olarak kabul edilen felsefeyi tarif ediyor. Okunabilirlik, performans, bakım kolaylığı, hata bulma

Hangi daha iyi kaynaklara hizmet eder ve yazarın neyi başarmaya çalıştığını anlamaya çalışmaktan daha etkilidir.

Ps Good Software tasarımı, dikkat etmeniz gereken şeydir. Proje, yeterince büyük olduğu göz önüne alındığında, yalnızca kodlara uymakla tanınması zor olacaktır.


1
İyi bir kaynak olarak "Temiz Kod" dan bahsetmek istiyorum.
mhr

3

Seçtiğiniz programlama dili ile birlikte gelen kütüphanelerin kodunun, en iyi uygulamalar ve iyi kodlama tarzı olduğu düşünülenlerin ne olduğunu görmek için genellikle iyi bir başlangıç ​​olduğunu buldum.

Buna rağmen, sıralama algoritmaları veya karmaşık konteyner sınıfları gibi yerler ile başlamak istemezsiniz.

Kod yazmada ilginç görüşler için başka bir yer ise Proje Euler'dir ( http://projecteuler.net/ ). Buradaki küçük dezavantaj: Başkalarının çözümlerini gönderdiği foruma erişmek için (tüm deneyim düzeyleri için ilginç zorluklar) önce sorunu çözmelisiniz. Ancak bir kez yapıldığında, neredeyse tüm büyük programlama dilleri için örnekler bulacaksınız. Sorunu zaten çözdüğünüz için, diğer insanların kodlarını anlamanıza yardımcı olacaktır. Artı, henüz bilmediğiniz, ancak ilginç bulabileceğiniz dillerin kodunu göreceksiniz.


3

Beautiful Code'u okumaktan gerçekten çok zevk aldım . Ayrıntılı açıklamaları olan kısa ama çok güzel kod örnekleri vardır.

... önde gelen bilgisayar bilimciler, yüksek profilli projelere nasıl alışılmadık, dikkatle tasarlanmış çözümler bulduğunu gösteren vaka çalışmaları sunmaktadır. Gözleriyle sorunları görmek için ana kodlama ve tasarım uzmanlarının omzuna bakabileceksiniz.

... Yazarlar, projelerinin mimarisi, yapımındaki değişimler ve kuralları çiğnemenin önemli olduğu zamanlarda çalıştıkları için yüksek sesle düşünürler.

Bu kitapta Brian Kernighan, KarlFogel, Jon Bentley, Tim Bray, Elliotte Rusty Harold, Michael Tüyler, Alberto Savoia, Charles Petzold, Douglas Crockford, Henry S. Warren, Jr., Ashish Gulhati, Lincoln Stein, Jim Kent'in katkılarıyla 33 bölüm yer aldı , Jack Dongarra ve PiotrLuszczek, Adam Kolawa, Greg Kroah-Hartman, Diomidis Spinellis, AndrewKuchling, Travis E. Oliphant, Ronald Mak, Rogerio Atem de Carvalho veRafael Monnerat, Bryan Cantrill, Jeff Dean ve Sanjay Ghemawat, SimonPeyton Jones, Kent Dybvig, William Otte ve Douglas C. Schmidt, AndrewPatzer, Andreas Zeller, Yukihiro Matsumoto, Arun Mehta, TV Raman, Laura Wingerd ve Christopher Seiwald ve Brian Hayes ...

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.