Kaynak kodunu okumak geliştiriciler için önemli mi?

Yazar | Steve Gordon

Çevirmen | Ay rolünde Mingming, sorumlu editör | Tu Min

Üretildi | CSDN (ID: CSDNnews)

Aşağıdaki çeviridir:

Hey arkadaşlar! Bu yazıda, kaynak kodunu aktif olarak okumak ve çalışmakla ilgili bazı fikirleri paylaşacağım. Bence kaynak kodunu okumak daha profesyonel bir geliştirici olmanıza yardımcı olabilir. Hiç şüphe yok ki, kaynak kodu okumak yazılım geliştirme seviyemi geliştirdi.

Kaynak kodunu okumalı mıyım?

Evet, bunu yapmalısınız!

İyi haber şu ki, her geçen gün yazılım geliştirirken bunu zaten yapıyorsunuz. Yıllar boyunca, geliştiricilerin zamanlarının çoğunu kod yazmak yerine kod okuyarak geçirdiklerini gösteren çeşitli istatistikler gördüm.

Yeni bir özellik geliştirmek veya bir hatayı düzeltmek istediğinizde, önce mevcut kodun mantığını anlamalısınız. Birim testini okuyarak kodun mantığını anlayabilirsiniz, çünkü birim testi kod davranışı beklentilerini net bir şekilde ifade edebilmelidir, ancak genellikle analiz etmek için belirli kod uygulamasının derinliklerine inmemiz gerekir.

Bu makale, önerilen bir kaynak kodu okuma formatı verecektir. Kaynak kodunu, özellikle daha önce hiç görmediğiniz kaynak kodunu okumak için inisiyatif almanızı tavsiye ederim. Çünkü daha önce hiç görülmemiş kodla karşılaştırıldığında, yazdığımız kodu okumak becerilerimizi geliştirmemize yardımcı olmuyor.

Kaynak kodunu daha iyi okuyabilir ve analiz edebilirseniz, gelecekte yeni özellikler yazabilir ve HATA'yı daha kolay çözebilirsiniz. İlgili kodu okuyarak iş için gereken bilgileri hızlı bir şekilde alabilirsiniz. Kendimizi kitapları daha hızlı okuyacak şekilde eğitebildiğimiz gibi, kendimizi de kaynak kodunu daha hızlı okuyup anlamak için eğitebiliriz.

Kaynak kodunu okumak için neden zaman harcayasınız?

Önce çocukların okumayı ve yazmayı nasıl öğrendiğini düşünelim. Caroline Linse'nin "Genç Öğrenci" adlı kitabında, daha önce okuduysanız bir kelime yazabileceğinizi söyledi. Bence bu mantıklı geliyor. Önce kelimeleri bağlam içinde okuyarak, sonra anlamlarını anlamaya ve doğru kullanmayı öğrenmeye başlıyorsunuz.

Okuma, okuma hacminizi genişletebilir ve gelecekte yazarken kullanabileceğiniz becerileri öğrenebilir. Bu yüzden okulda edebiyat okuyoruz. Sonunda, daha çok okudukça, neyin daha yararlı olduğunu anlama ve bilme yeteneğine sahibiz.

Aynısı yazılım kodu için de geçerlidir. Ben bir C # programcısıyım, ancak hangi programlama dili geliştirici olursanız olun, her programlama dili çok sayıda sözdizimi ve anahtar kelimeye sahip olacaktır. Sınırsız olasılıkları kodlamak için bu basit anahtar kelimeleri ve kavramları birleştirebilirsiniz. Aynı anlamı ifade etmenin birçok yolu olduğu gibi, aynı etkiyi elde etmenin de birçok yolu vardır. Teknik açıdan bakıldığında, farklı kodlar aynı etkiyi sağlayabilir, ancak bazı yöntemler diğerlerinden daha uygundur. Kaynak kodunu okuyarak, bazı programların diğerlerinden daha etkili olabileceğini keşfedeceğiz.

Merak ediyorum, meslektaşlarınızla hiç tanıştınız mı, hatta okunması zor bir kodu kendiniz mi yazdınız? Yine de karşılaştım. Okunması zor olan kodun bakımı zordur ve geliştirme sürecini etkileyebilir. Tıpkı dilde olduğu gibi, irrasyonel paragraf yapısı kafa karıştırıcı ve anlaşılması zor olabilir, kod da öyle. Birçok anlaşılmaz paragraf veya kod, gerçek anlamını veya niyetini anlamak için tekrar tekrar okumayı gerektirir. Anlaşılması zor kod yazmaktan kaçınmak için daha fazla kaynak kodu okuyarak kodlama seviyesini iyileştirebiliriz.

Becerileri geliştirmek sıkı çalışma gerektirir. Sizden daha fazla deneyime sahip kişilerin kodunu öğrenmek, gelecekteki iş kodlamanızda size yardımcı olacaktır. Örneğin, doktorlar ancak yıllarca eğitim gördükten sonra tıp yapmaya hak kazanabilirler. Bu doktorlar önce deneyimli eski doktorlarla çalıştı, önce gözlemleyip taklit ettikten sonra bağımsız olarak çalıştı. En iyi doktorlar ayrıca profesyonel alanlarındaki makaleleri incelemek ve onlardan yeni teknikler ve yöntemler öğrenmek için inisiyatif alacaklar.

Yukarıdaki açıklama açısından yazılım geliştirme alanının yeterli olmadığını düşünüyorum. Bazı takımlar nispeten daha iyi durumda. Eşli programlama ve Mob programlama (3 veya daha fazla programcı birlikte programlama), geliştiricilerin becerileri paylaşması için yalnızca bir yoldur. Becerilerinizi geliştirmenin bir başka yolu da, düzenli olarak yeni kodla iletişime geçmek ve ona bağlı kalabilmektir.

Bu konuda açık sözlü olabilir miyim? Okumak için vaktiniz yoksa yazmaya zamanınız yoksa bu kadar basit.

- Stephen King, "Yazmakla İlgili: Stephen King'in Yaratıcı Kariyerinin Anıları"

Hangi kaynak kodunu okumalıyım?

Yukarıdaki bakış açıma katılıyorsanız, kaynak kodu okuma fikrini günlük işinizin bir parçası olarak kabul edebileceğinizi umuyorum, böylece kaynak kodunu okuyarak becerilerinizi sürekli geliştirebilirsiniz.

Sonraki soru, hangi kaynak kodunu okumalısınız?

Makro bakış açısından, bu sorunun önemli olduğunu düşünmüyorum, önemli olan kaynak kodu okuyup okumadığınız. Unutmayın, tüm yazılım kodları aynı değildir. Bazı kaynak kodlarını okumak, diğer kaynak kodlarını okumaktan kesinlikle daha iyi olacaktır, ancak iyi kaynak kodu veya kötü kaynak kodu ne olursa olsun, kodlama becerimizi geliştirmemize yardımcı olabilir.

Bu, okuduğunuz tüm kodlara katılmanız gerektiği anlamına gelmez. "Kötü" kodu okumak da bana biraz ilham verebilir. Sevmediğiniz bir stil bulursanız veya bazı kodları okurken işe yaramaz bir yöntem okursanız, kendi kodlama zamanımızı da kurtarabilirsiniz çünkü aynı hataları yapmaktan kaçınabiliriz.

Başka bir deyişle, bazı yeni ve daha güvenilir uygulamalar eklemek için kodu okumanız gerekir (sonraki bölümde kaynak kodun nasıl bulunacağı açıklanacaktır).

Okuduğunuz kaynak kodun çeşitliliği çok önemlidir, çünkü bilinçli olarak (bilinçaltında) farklı kaynaklardan kalıpları öğrenmenize yardımcı olacaktır. Farklı yerlerde aynı yöntemleri, kalıpları ve kodlama eğilimlerini gördüğünüzde, daha inandırıcıdır.

Zamanımı sıklıkla kullandığım C # kod tabanının kaynak kodunu araştırarak geçiriyorum. Böylelikle sadece kod okuma yeteneğimi geliştirmekle kalmadı, aynı zamanda kütüphane işlevlerinin iç işleyişini daha iyi anlamama ve onları daha iyi kullanmama yardımcı oldu.Bir taşla iki kuşu öldürdüğüm söylenebilir.

Bunu çok sık yapmasam da, nadiren veya hiç kullanmadığım bazı programlama dili kodlarını okumayı planlıyorum. Bir programlama dilinde yetkin olmak çok faydalıdır, ancak dil aralığınızı genişletmenin birçok yararı vardır. Dikkatlice düşünürseniz, birçok insanın ikinci hatta üçüncü dili öğrendiğini ve bundan faydalanabileceğini göreceksiniz. Diğer ülkelerden insanlarla iletişim kurmaları çok kolaydır ve diğer dilleri öğrenerek, kendi ana dillerini öğrenmeyi ve kullanmayı teşvik ederler.

İkinci bir programlama dili öğrenmek yalnızca kariyer seçimlerinizi genişletmekle kalmaz, aynı zamanda ana programlama diliniz ile benzerlikleri ve farklılıkları fark etmenizi sağlar. Genellikle bir programlama dilinin özelliklerinin başka bir programlama dilini etkilediğini görüyoruz. Örneğin, C # 'da giderek daha fazla işlevsel dilbilgisi her F # sürümünde ilk sırada görünür. Kanal gibi bazı .NET özellikleri Go dilinden etkilenir. Bu özellikleri önceden ikinci programlama diline odaklanarak öğrenebiliriz.

Mükemmel kaynak kodu nerede bulunur?

Pek çok potansiyel kaynak kaynağı var.

GitHub

Hemen hemen tüm programlama dillerinin kaynak kodu burada mevcuttur. Peki nereden başlıyorsunuz? Ben şahsen önce Microsoft'un ASP.NET Core ve CoreFx kitaplıklarını öğrenmeyi tercih ediyorum. Çerçeve ekibinin yüksek kaliteli kodunun derinlemesine çalışmasının iyi bir öğrenme yöntemi olduğunu buldum.

Bu çerçeveler çok iyi öğrenme kaynaklarıdır çünkü kodları yüksek kalitededir ve ayrıca Microsoft'un kodlama modelinin gölgesini onlardan da görebilirsiniz. Ekibin ölçeklenebilir çerçeve kodunu nasıl oluşturduğunu okuyup öğrenerek kişisel olarak çok şey kazandım. Son zamanlarda, görev paralel kitaplığı hakkında düşünmek için biraz zaman harcadım ve yazdığım bazı kodlarda CancellationTokenSource'un çok kullanıldığını gördüm. Microsoft'un kaynak kodunu inceleyerek ortak kullanımlarını öğrendim.

GitHub iyi bir kaynak kodu arama işlevi sağlar, tarayıcıdaki kaynak kodunu öğrenmek için kodu indirmenize bile gerek yoktur. Daha fazlasını öğrenmek istiyorsanız, kaynak kodunu yerel olarak klonlamanızı tavsiye ederim, böylece öğrenmenin daha kolay olması sağlanır.

Polly ve MediatR gibi kullandığım kütüphanelerin kaynak kodlarını okuyarak kullanabileceğim fonksiyonları genişletmeyi de seviyorum. Bu beni diğer programlama stillerine maruz bıraktı ve kodlama anlayışımı derinleştirmeme yardımcı oldu. Okuduğum kaynak kodu hiç beğenmiyorum veya ona katılmıyorum, ancak kaynak kodunu okumak kodlama alışkanlıklarımı anlamama yardımcı oluyor. Kaynak kodunu okuyarak, potansiyel tuzaklardan ve kötü tasarımlardan daha bilinçli bir şekilde kaçınmak için inisiyatif alacağım.

Blog yazısı

İnternette yazılım geliştirmeyle ilgili birçok mükemmel makale var. Kesinlikle örnek kod içeren teknik bir blog bulabilirsiniz. Bu makalelerin kodu genellikle nispeten kısa olduğu için, kısa sürede anlaşılması ve sindirilmesi daha kolaydır. Genellikle, blogun kod yazarı da yorumlar veya açıklamalar verir.Önce kodu analiz edip sonra yazarın niyetiyle karşılaştırabilirsiniz.

kitabın

Elektronik ve basılı versiyonlar da dahil olmak üzere birçok klasik teknik kitap var. Bu kitapların her ikisi de bazı kaynak kodları içerecektir. Geçen yıl, Konrad Kokosa tarafından yazılan "Derin .net Bellek Yönetimi" ni okuyarak yüksek performanslı kod yazma hakkında çok şey öğrendim.

StackOverFlow

İç kaynaklar

Daha önce de söylediğim gibi, kendinizi daha önce görmediğiniz koda maruz bırakmak için kaynak kodunu okumak çok önemlidir. Eklemek istediğim şey, çalışma kodu tabanında nadiren katıldığınız projeleri öğrenerek kodlama becerilerinizi de geliştirebileceğinizdir. Bu kodları anlamak ve nasıl çalıştıklarını anlamak için bir dakikanızı ayırabilirsiniz. Bu projeleri bir gün desteklemeniz gerekiyorsa, kodla kaynak yazarından daha aşina olabilirsiniz.

Yeni bir ekibe katıldığınızda, ekibin mevcut kodunu öğrenerek kodlama standartları ve ortak modeller hakkında hızlı bir şekilde bilgi edinebilirsiniz. Bu, ekibe entegrasyonunuzu hızlandıracak ve kişisel gelişiminizi destekleyecektir.

Bu çok detaylı bir liste değil. Kaynak kodunu nerede bulursanız bulun, derinlemesine okumak ve çalışmak için daha fazla zaman harcamalısınız. Gelişim becerilerini geliştirmek için bu şekilde zaman ayırmak çok değerlidir.

Kaynak kodu nasıl okunur?

Kaynak kodunu okumayla ilgili olarak, herkesin kendi tercihleri vardır. Sadece doğru olduğunu düşündüğün şekilde yap. Burada, kendi kaynak kodu okuma yöntemimi paylaşacağım, kendi kaynak kod okuma yolculuğunuza başlamak için bu yöntemlerden öğrenebilirsiniz.

Genelde öğrenmek istediğim kodlama stilinin kaynak koduna veya kodlama anlayışımı derinleştirebilecek kaynak koduna odaklanıyorum. Daha önce de belirttiğim gibi, bu tür bir yatırım karşılığını alacaktır.

Kaynak kodunu genellikle GitHub'da buluyorum. Kodun amacını anlamaya odaklanacağım. Oldukça soyut bir işlevden başlamaya çalışacağım ve sonra yavaş yavaş iç kısmın derinliklerine ineceğim. Kod öğrenirken not almak ve kod akışını kaydetmek için OneNote'u kullanmayı seviyorum. Bunlar nispeten basit notlardır. Bu süreç, hafızamı ve anlayışımı derinleştirmeme yardımcı olduğu için referans materyalleri biriktirmiyor. Kaynak kodunu yazılı bir tanıma dönüştürdüğümde, izlenimim daha güçlü hale geliyor ve bilgi noktalarını daha iyi anlıyorum.

Kodu gözden geçirmek ve zihninizde bir mantık diyagramı oluşturmak büyük bir beceridir. Bu yeteneği kaynak kodunu okurken geliştirebilirseniz, bir dahaki hatayı düzelttiğinizde daha sorunsuz olacaktır.

Kaynak kodunu genel olarak anladıktan sonra, onu daha derinlemesine inceleyeceğim. Sonra, kaynak kodunu yerel olarak klonlayacağım ve IDE'ye aktaracağım. Kaynak kodu arasında hızlıca geçiş yapmak ve kaynak kodunu daha fazla incelemek için IDE'nin kod gezinme işlevini kullanabilirsiniz. Bu noktada yazarın kodu neden böyle yazdığını düşüneceğim. Önce kendim için düşünmeyi ve ardından yazarın gerçek koduyla karşılaştırmayı seviyorum. Bence: Yazar gibi yazmak daha mı iyi ve daha etkili? Bir dahaki sefere benzer bir sahneyle karşılaşırsam, onun yazılarına başvurmalı mıyım?

Kaynak kodunu okuma sürecinde, kodlarken hiç kullanmadığım API'leri bulacağım. Kod yazarken zaten aşina olduğum API'leri kullanma eğiliminde olduğumu görüyorum, ancak bu en iyi uygulama olmayabilir. Bazen başka seçeneklerin olduğunu bilmediğimiz için zaten aşina olduğumuz API'yı kullanmaya devam ediyoruz. Kaynak kodunu okuma sürecinde, daha önce hiç kullanmadığım bir API ile karşılaşırsam, amacını anlamak için açıklamasını ve yöntem imzasını kontrol edeceğim.

Kaynak kodunu okumak, IDE araçlarını kullanma becerimi de geliştirdi. Koda göz atarken, bazı püf noktaları bulacağım veya çok zaman kazandıran bazı yararlı kısayol tuşlarını öğreneceğim. Ayrıca, kod akışını hızlı bir şekilde izleyebilmek için genellikle bir sınıfı ikinci ekranda bir ekrana sürüklerim. Bunu genellikle kod yazarken yaparım. Kaynak kodunu okurken aşina olmadığım dil özelliklerini veya kalıplarını da öğrenmeye çalışıyorum. C # 'ın yeni özelliklerini kaynak kodunu okuyarak hızlıca kavradım.

Ya bazı kodlar anlaşılamazsa?

Panik yapmayın, bu kesinlikle iyi. İlk geldiğinizde, okuduğunuz tüm kaynak kodunu anlamanız imkansızdı. Ve bazıları anlamıyor, bu tam olarak istediğimiz etki. Kodlama becerilerinizi geliştirmek için yeni kodlar veya yeni sözdizimi ile kodlar okumalısınız. Anlaşılması kolay bir kod okumak, çok basit bir kitap okumak gibidir ve size pek bir faydası olmayacaktır.

Kodu beyninizde küçük parçalara ayırmayı denemelisiniz. Bu kodların hangi işlevler için olduğunu düşünün ve neden bunları böyle yazıyorsunuz? Yazar hiç düşünmediğiniz bir sorunu çözmek için bir yöntem kullandı mı? Belirli bir dilbilgisini veya belirli bir anahtar kelimeyi anlamadığınızda, lütfen durun ve yardım dosyasında arama yapın. Gerçek kullanım senaryosu ile, anlamak için yardım belgesine bakmak daha iyi olacaktır.

Daha önce hiç kullanmadığınız bir çerçeve API ile karşılaşırsanız, kod belgeleriniz varsa kod belgelerine bakabilirsiniz. Tüm Microsoft kitaplıkları için genel yöntemler XML açıklamaları içerecektir. Bu yorumları doğrudan okuyabilir veya .NET API belgelerine erişerek sorgulayabilirsiniz.

Kaynak kodunu bilinçli ve aktif bir şekilde okumanın önemi, bunun sizin zamanınızı ayırma ve kendi becerilerinize yatırım yapma girişiminiz olmasıdır. İş yerinde son tarihlerle karşılaşmak yerine, çeşitli işlevler tamamlanmalı ve çeşitli hatalar düzeltilmelidir. Bu şekilde, doğrudan kullandığınız koddan başka kaynak kodunu öğrenmek için çok az enerjiniz olacaktır. Bu durum öğrenmeye pek yardımcı olmuyor.

Kaynak koddan ne öğrendim?

Kaynak kodundan çok şey öğrendim, bu yüzden kaynak kodunu öğrenmenizi tavsiye etmek için hiçbir çaba sarf etmiyorum. Modern zanaatkarlar, bir gün seviyelerine ulaşmayı umarak, kendi alanlarındaki ustaların çalışmalarını sık sık incelerler. Geliştiriciler ayrıca becerilerini geliştirmek için alanlarındaki uzmanlardan bir şeyler öğrenebilirler.

Kişisel olarak, bir .NET geliştiricisi olarak, Microsoft'un .NET Core ve ASP.NET Core kaynak kodunu öğrenmenin çok değerli olduğunu düşünüyorum. Microsoft, daha profesyonel dil veya çalışma zamanı bilgisine sahip birçok mükemmel geliştiriciye sahiptir.

Ben kendi kendini yetiştiren bir geliştiriciyim ve yakın zamanda birisinin bunu Twitter'da söylediğini gördüm (ancak kim olduğunu hatırlayamıyorum). C # 'ı çeşitli girişimler ve çeşitli hatalarla öğrendim ve aktif olarak kaynak kodunu öğreneceğim. Pek çok akademisyenin büyük edebi eserleri incelemesi gibi, harika kodlar okuyarak birçok sır açığa çıkarılabilir.

Yazılım tasarımıyla ilgilenen ve YouTube'da bulunan .NET Core çerçevesi hakkında daha fazla bilgi edinmek isteyenlere bir kaynak öneririm. .NET ekibi, .NET tasarım incelemelerini her hafta YouTube'da yayınlar. Bu toplantılarda ekip, .NET Core API için önerilen değişiklikleri inceleyecektir. Bu konferansları seçici bir şekilde izlemenizi öneririm Bazı insanlar için, konferansları izlemek için kendi zamanlarını harcamak çok "geek" olabilir, ancak bu hala çok öğrenmenin bir yolu. Bu ekip gerçek uzmanlardan oluşuyor ve şok edici olan dili, çalışma süresini ve çerçeveyi biliyorlar. Önerilen API ile ilgili tartışmalarını izlemek, yaygın olarak kullanılan bir çerçevenin dikkate alması gereken sorunları anlamamıza yardımcı olabilir. Bu videoları izleyerek çoğu zaman çok değerli fikirler edinebiliyorum.

sonuç olarak

Bu makaleyi yazmaktaki asıl amacım, bazı okuyucuları kaynak kodunu daha aktif okumaya ve öğrenmeye teşvik etmektir. Kaynak kodunu okuyarak, daha iyi bir geliştirici olmama yardımcı olan C # dili ve .NET Core çerçevesi hakkında daha fazla şey öğrendim. Kaynak kodunu okumak için düzenli olarak birkaç saat yatırım yapmak, gelecekte zengin getiriler getirecektir. Kaynak kodunu okuyarak, farklı kodlama stilleri ve teknikleri hakkında kendi görüşlerinize sahip olacaksınız. Genellikle kullandığınız çerçevenin çalışma prensibini daha derin bir düzeyde anlayacaksınız ve bu da onu daha iyi kullanmanızı teşvik edecektir. Kaynak kodunu daha hızlı okuyabileceksiniz, böylece gereksinimden kodlamanın tamamlanmasına kadar geçen süreyi kısaltmanıza yardımcı olacaksınız.

Orijinal: https://www.stevejgordon.co.uk/become-a-better-developer-by-reading-source-code

Bu makale bir CSDN çevirisidir, lütfen yeniden basımın kaynağını belirtin.

Savaş Salgını · Jiashan Sıcak! 240'dan fazla parti üyesi ve genç gönüllü bedava kan bağışlıyor
önceki
Savaş Salgını Jiashan28 gün ve gece, kuru fırının kart noktası başarıyla kaldırıldı
Sonraki
sadece! 2019 Küresel AI Raporu yayınlandı, bu 8 pozisyon 2020'de popüler olacak
Programcının pişmanlığı: Veri analizini neden erken öğrenmedim?
Komik: "Dize eşleme algoritması" nasıl optimize edilir?
Wuhan'da 10 adet daha kare kabinli hastane inşa edilecek ve Hankou'daki kuzey kabin hastanesi bugün teslim edilecek
Bu yeterli! Bizans Generalleri Sorunu'nu bir makalede anlayın
Evden çalışmanın buz kıranı
100.000 Ali'nin kullanmayı sevdiği çevrimiçi ünlü araç ne kadar harika?
Eve Hoşgeldin! Üç "röle", Wucheng işe dönüş özel treni bugün kalkıyor
Birkaç Python "küçük numara" | Kod dahil
Wucheng Bölgesinde dört lider grubu, salgının önlenmesi ve kontrolünün ve ekonomik ve sosyal kalkınmanın zaferini elde etmeye çabalayarak "üç hizmeti" gerçekleştirmek için cephenin derinliklerine ind
Java'nın istikrarlı büyümesi ve Kotlin'in yükselişiyle, 2020'deki başlıca programlama dillerinin gelişme eğilimleri
Heterojen hesaplamanın yükselişi, GPU hızlandırmalı bilgi işlem sunucusu FP5468G2 ortaya çıktı
To Top