Hiçbir şey büyümenizi deneyimli bir mentor kadar hızlandıramaz. Ancak bulmak zor olabilir ve bulunabilirlikleri genellikle sınırlıdır.
Öte yandan, ChatGPT gibi yapay zeka ajanları 7/24 hizmetinizdedir ve oldukça bilgili görünmektedir. Böyle bir temsilci, gerçek bir insan akıl hocasının makul bir ikamesi olabilir mi?
Benim özellikle ilgilendiğim şey daha fazla "meta" tavsiyedir - yalnızca kod oluşturmak veya açıklamak değil , bir geliştirici olarak büyümenize ve olgunlaşmanıza yardımcı olacak, yalnızca kapsamlı deneyim yoluyla edinilen küçük ipuçları ve püf noktaları .
20 yıldan fazla deneyime sahip, birkaç genç geliştiriciye danışmanlık yapmış biri olarak, ChatGPT'nin yeni başlayan biri için tavsiyesinin ne kadar sağlam, kapsamlı ve eyleme dönüştürülebilir olacağını merak ediyorum.
Hadi hızlı bir test sürüşüne çıkalım!
ChatGPT'nin tavsiyelerinin kalitesini merak ediyorsanız ancak tartışmanın tamamını ve ayrıntılı adım adım yorumumu okumak istemiyorsanız, doğrudan son bölüme atlamaktan çekinmeyin.
💬 İstemlerim.
🤖 ChatGPT cevapları.
🤔 Düşüncelerim/yorumlarım.
💬 10 yılı aşkın deneyime sahip deneyimli, profesyonel bir yazılım geliştiricisi olarak hareket edin. 2-3 yıldan fazla tecrübesi olmayan, daha genç ve kıdemsiz bir meslektaşınıza mentorluk yaptığınızı hayal edin. Size programlama ve yazılım geliştirme kariyeri ile ilgili farklı sorular soracağım. Bu genç geliştirici olarak onlara soracağım. Onlara, daha iyi bir geliştirici olmam ve profesyonel olarak gelişmem için en yararlı olacak şekilde yanıt verin.
🤖 Elbette, sana yardım etmek için buradayım! Programlama veya yazılım geliştirme kariyeriniz hakkında sorularınızı sormaktan çekinmeyin; deneyimlerime dayanarak size rehberlik etmek için elimden geleni yapacağım.
🤔 Şu ana kadar çok iyi. Başlayalım!
💬 Lütfen uygulaması hızlı ve kolay olan ve daha iyi bir geliştirici olmama hemen yardımcı olacak 10 yaşam tüyosunu paylaşın.
🤖 Tabii ki! Bir geliştirici olarak becerilerinizi geliştirmek için hızla uygulayabileceğiniz 10 yaşam tüyosu:
Klavye kısayollarını kullanın : Kodda daha hızlı gezinmek ve değiştirmek için IDE'yi veya düzenleyiciye özel klavye kısayollarını öğrenin ve kullanın. Size zaman kazandıracak ve verimliliğinizi artıracaktır.
Pomodoro Tekniğini izleyin : Çalışmanızı küçük, yönetilebilir aralıklara (genellikle 25 dakika) bölün ve ardından kısa bir ara verin. Bu teknik odaklanmanıza ve tutarlı bir çalışma ritmini korumanıza yardımcı olabilir.
Ana sürüm kontrolü : Git veya başka bir sürüm kontrol sistemiyle rahatlayın. Bu, kodunuzdaki değişiklikleri izlemenize, başkalarıyla işbirliği yapmanıza ve gerektiğinde önceki sürümlere dönmenize yardımcı olacaktır.
Tekrarlanan görevleri otomatikleştirin : Kod biçimlendirme, dosya yeniden adlandırma veya proje iskelesi oluşturma gibi sıradan görevleri otomatikleştirmek için komut dosyalarını veya araçları kullanın. Bu size zaman kazandıracak ve insan hatası olasılığını azaltacaktır.
Temiz kod okuyun ve yazın : Okunması ve anlaşılması kolay, temiz bir kodlama stili benimseyin. Adlandırma kuralları, girintiler ve kod yapısına ilişkin en iyi uygulamaları izleyin. Bu, kodunuzu daha sürdürülebilir hale getirecek ve hata ayıklamaya harcanan süreyi azaltacaktır.
Kodunuzu yorumlayın : Kodunuzun amacını ve işlevselliğini açıklayan anlamlı yorumlar yazın. Bu, başkalarının kodunuzu anlamasını ve sizin de kodu daha sonra tekrar ziyaret ettiğinizde düşünce sürecinizi hatırlamanızı kolaylaştıracaktır.
Kod incelemeleri isteyin : Meslektaşlarınızdan veya akıl hocalarınızdan kodunuzu düzenli olarak incelemelerini isteyin. Bu, geliştirilecek alanları belirlemenize ve onların uzmanlıklarından öğrenmenize yardımcı olacaktır.
Meraklı kalın : Sürekli olarak yeni dilleri, çerçeveleri ve araçları keşfedin. Bu, en son sektör trendleri konusunda güncel kalmanıza ve becerilerinizi genişletmenize yardımcı olacaktır.
Sorunları daha küçük parçalara ayırın : Karmaşık bir sorunla karşılaştığınızda, onu daha küçük, daha yönetilebilir görevlere bölün. Bu, odaklanmanızı korumanıza ve bunalmanızı önlemenize yardımcı olacaktır.
Kendinize iyi bakın : Fiziksel ve zihinsel sağlığınıza öncelik verin. Düzenli egzersiz yapın, yeterince uyuyun ve gerektiğinde mola verin. Sağlıklı bir zihin ve beden, işinizde daha üretken olmanıza ve odaklanmanıza yardımcı olacaktır.
Daha iyi bir geliştirici olmanın devam eden bir süreç olduğunu ve zaman ve özveri gerektirdiğini unutmayın. Ancak bu yaşam tüyolarını uygulayarak büyümenizi hızlandırabilir ve becerilerinizi sürekli olarak geliştirebilirsiniz.
🤔 Liste çoğunlukla sağlam görünüyor, ancak biraz rastgele ve özellikle çığır açıcı değil. Ancak ChatGPT'den yeni başlayanlar için tavsiye istedim, dolayısıyla nispeten bariz cevaplar anlaşılabilir.
Bu ipuçlarından bazılarının uygulanması o kadar hızlı ve kolay görünmüyor (ki bu benim önerimin bir parçasıydı). Diğerleri biraz belirsizdir ve daha fazla açıklama gerektirir - ancak ChatGPT yinelemeli olarak kullanılmak üzere tasarlandığından, takip sorularıyla daha da derine inerek sanırım bunda bir sorun yok. Tamamen katılmadığım birkaç nokta var ama bunları yanlış olmaktan ziyade fikir meselesi olarak görüyorum. Genel olarak fena değil!
Her öneriyi biraz daha derinlemesine inceleyelim:
Klavye kısayollarını kullanın : Sağlam tavsiye. Uygulaması hızlı ve kolaydır ve şüphesiz üretkenliğinizi artıracaktır. Beni şaşırtan şeylerden biri neden sadece basit klavye kısayollarının kullanılması? Kod zekası, parçacıklar, otomatik biçimlendiriciler, kod oluşturucular ve GitHub Copilot (veya ChatGPT'nin kendisi) gibi yapay zeka asistanları gibi daha gelişmiş özelliklerin kullanılması, kullanmaya başlamak da aynı derecede kolay olacak ve çok daha büyük bir destek sağlayacaktır.
Pomodoro Tekniğini uygulayın : İyi tavsiye. Kesinlikle denemelisiniz. Pomodoro'yu daha önce hiç duymadıysanız, Google'da aramanız veya ChatGPT'ye bir takip sorusu sormanız gerekebilir, ancak bunun dışında oldukça basit ve açıklayıcıdır.
Ana sürüm kontrolü : İyi bir tavsiye, ancak kesinlikle bir cankurtaran tüyosu değil. "Usta" kelimesi bile bunun hızlı ve kolay bir çözüm olmadığını açıkça gösteriyor. Ayrıca sürüm kontrolünün, üretkenliğinizi artırmaya yönelik bir "hack" olmaktan ziyade, programlama dilinize, ana çerçevenize veya veritabanınıza benzer şekilde birincil teknoloji yığınınızın ayrılmaz bir parçası olduğunu da savunuyorum. Ancak aksi takdirde tavsiye doğrudur.
Tekrarlanan görevleri otomatikleştirin : Sağlam tavsiye, ancak yine de daha fazla araştırmaya ihtiyaç var. Hemen uygulamaya geçilemeyecek kadar yüksek düzeyde.
Temiz kod okuyun ve yazın : Çok sayıda temiz kod (veya genel olarak kod) okumak harika bir tavsiyedir ve uygulaması kolaydır. İşin zor kısmı, yeni başlayan biri olarak hangi kodun temiz olduğunu ve onu nerede bulacağını nasıl bileceğinizdir. Bu da yine daha derin bir araştırmayı gerektiriyor. Ancak temiz kod yazmak tamamen farklı bir konudur. Bu, zanaatınızda ömür boyu sürecek ustalığınızın bir parçasıdır ve bu konu üzerine bütün kitaplar yazılmıştır. Kesinlikle üzerinde çalışmalısınız, ancak tıpkı sürüm kontrolünde uzmanlaşmak gibi, bu da bir cankurtaran tüyosu olmaktan çok uzak.
Kodunuzu yorumlayın : Tartışmalı bulduğum ilk ipucu bu (gerçi daha önce de söylediğim gibi, açıkça yanlış olduğu için değil, kişisel tercihler nedeniyle). Yorumlarla ilgili iki duruş vardır: yoğun şekilde yorum yapmak vs yorumlara ihtiyaç duymayacağınız kadar açıklayıcı kod yapmak (kodunuzun arkasındaki iş amacını açıklamanız gerekmediği sürece). Ben kesinlikle ikinci taraftayım, dolayısıyla ChatGPT'nin son derece otoriter "yorum yaz" özelliği bende pek yankı uyandırmıyor. Öte yandan anlamlı yorumlar yazmanız ve kodunuzun amacını açıklamanız da yazıyor ki buna da çok katılıyorum. Ama aynı zamanda kötü bir uygulama ve zaman kaybı olarak gördüğüm kodunuzun işlevselliğini açıklamayı da söylüyor. Bu yüzden bu konuda karışık hislerim var.
Kod incelemelerini arayın : Bu tavsiye olabildiğince sağlam ve kolayca uygulanabilir. Özellikle yeni başlayan biri olarak, kesinlikle mümkün olduğunca kod incelemeleri aramalısınız.
Meraklı kalın : Bu biraz tartışmalı bulduğum ikinci tavsiye. Yeni dilleri, çerçeveleri ve araçları keşfetmek genel olarak iyi bir tavsiyedir ("sürekli" konusunda tartışsam da - moda sözcüklere dayalı geliştirme gibi kokuyor), ancak yalnızca bir veya iki yıl eğitim almış yeni başlayanlar için en iyi strateji olmayabilir. deneyim. Bir genç olarak, en iyi uygulamalar ve ilkelerden oluşan sağlam bir temel oluşturmaya ve bunları derinlemesine öğrenmeye daha fazla odaklanmalısınız; bu, bir süre tek bir yığında uzmanlaşmaya odaklandığınızda daha kolay olur. Ama açıkçası burada ufak tefek kusurlar arıyorum ve bu tavsiyeye yanlış demiyorum.
Sorunları daha küçük parçalara ayırın : Sağlam tavsiye, ancak yine de çok üst düzey. Sorunları etkili bir şekilde parçalara ayırmak önemsiz değildir. Bunu pratikte uygulamak için biraz daha detaya inmek gerekli olacaktır.
Kendinize iyi bakın : Çok iyi ve uygulanabilir bir tavsiye. ChatGPT'nin doğrudan zorlu teknoloji becerileriyle ilgili olmayan buna benzer tavsiyeler içermesi aslında güzel.
Tamam, tüm ipuçlarını inceledik. Fena değil, hiç de kötü değil. Ancak bunların hepsi hemen uygulanamaz. Çekirdeğe ne kadar yaklaşabileceğimizi görmek için birkaç tanesini inceleyelim
💬 "Klavye kısayollarını kullanma" ipucunu daha derinlemesine inceleyelim. Olası tüm kısayolları öğrenmem mi yoksa odaklanmam gereken belirli kısayol kategorileri varsa biraz detaylandırabilir misiniz?
🤖 Kesinlikle! Klavye kısayolları söz konusu olduğunda önemli olan üretkenliğiniz ve verimliliğiniz üzerinde en önemli etkiye sahip olanları öğrenmeye odaklanmaktır. Mevcut her kısayolu öğrenmenize gerek yok, bunun yerine size en çok zaman kazandıracak ve iş akışınızı kolaylaştırmanıza yardımcı olacak olanlara öncelik verin.
Odaklanabileceğiniz bazı klavye kısayolu kategorileri şunlardır:
Gezinme kısayolları : Bu kısayollar, kodunuzda hızlı bir şekilde gezinmenize, dosyalar veya sekmeler arasında geçiş yapmanıza ve belirli sembolleri veya bir anahtar kelimenin örneklerini bulmanıza yardımcı olur. Örnekler arasında "Tanımlamaya Git", "Satıra Git" ve "Tüm Referansları Bul" yer alır.
Kısayolları düzenleme : Bu kısayollar, metni keserek, kopyalayarak, yapıştırarak ve biçimlendirerek kodu değiştirmenize yardımcı olur. Örnekler arasında "Satırı Çoğalt", "Satırı Yukarı/Aşağı Taşı" ve "Yorumu Değiştir" yer alır.
Yeniden düzenleme kısayolları : Yeniden düzenleme, temiz ve verimli kodu korumanın önemli bir parçasıdır. Kodu hızlı bir şekilde yeniden düzenlemenize yardımcı olan kısayollar, size çok zaman kazandırabilir. Örnekler arasında "Simgeyi Yeniden Adlandır", "Çıkarma Yöntemi" ve "İmzayı Değiştir" yer alır.
Hata ayıklama kısayolları : Hata ayıklama, geliştirme sürecinin çok önemli bir parçasıdır. Kesme noktalarını yönetmenize, kodda adım adım ilerlemenize ve değişkenleri incelemenize yardımcı olan kısayollar, hata ayıklama oturumlarınızı kolaylaştırabilir. Örnekler arasında "Kesme Noktasını Değiştir", "Adım At" ve "Adım At" yer alır.
IDE'ye özgü kısayollar : IDE veya kod düzenleyiciniz, kısayollar aracılığıyla erişilebilen benzersiz özelliklere veya araçlara sahip olabilir. Seçtiğiniz geliştirme ortamından en iyi şekilde yararlanmak için bu kısayollara alışın.
Bu kısayollara ilişkin gerçek tuş bileşimlerinin, kullandığınız IDE'ye veya kod düzenleyiciye bağlı olarak değişebileceğini unutmayın. Bu kısayolları keşfedip tercihinize göre özelleştirmek için editörünüzün belgelerine veya ayarlarına bakın.
Kısayolları öğrenirken aynı anda birkaç tanesine odaklanarak başlayın. Onlarla daha rahat olmaya başladıkça, günlük iş akışınıza yavaş yavaş daha fazla kısayol ekleyin. Zamanla bu kısayolları kullanmak alışkanlık haline gelecek ve üretkenliğinizde ve verimliliğinizde önemli bir gelişme olduğunu fark edeceksiniz.
🤔 Harika bir sınıflandırma! Etkilendim. Ayrıca her kategori için somut örnekleri de seviyorum. Bu düzeydeki tavsiyeler zaten uygulanabilir niteliktedir; IDE'nizin belgelerinde "Gezinme kısayollarını" veya "Tanımlamaya Git"i kolayca arayabilirsiniz. Üstelik kategoriler iyi seçilmiş. Bunlar gerçekten üretkenliğinize önemli bir artış sağlayacak olanlardır.
Hala kaçırdığım bir şey var: otomatik tamamlama veya kod parçacıkları gibi daha önemli üretkenlik artırıcılar. Var olduklarını bilmiyormuş gibi davrandığım için bunları açıkça sormak istemiyorum. Ancak kuralları biraz esnetelim:
💬 "Kodu daha hızlı gezinmek ve değiştirmek için" kısayolları öğrenmem gerektiğini, "anahtarın üretkenliğiniz ve verimliliğiniz üzerinde en önemli etkiye sahip olanları öğrenmeye odaklanmak" ve "en önemli olanlara öncelik vermek olduğunu" söylediniz. size en fazla zaman tasarrufu sağlar ve iş akışınızı kolaylaştırmaya yardımcı olur". Bu hedeflere ulaşmama yardımcı olabilecek, klavye kısayollarının dışında başka araçlar veya IDE özellikleri var mı?
🤖 Kesinlikle! Klavye kısayollarının yanı sıra üretkenliğinizi ve verimliliğinizi artırmanıza yardımcı olabilecek birçok başka araç ve IDE özelliği vardır. Bunlardan bazıları:
Kod parçacıkları ve şablonlar : Birçok IDE ve düzenleyici, yalnızca birkaç tuş vuruşuyla yaygın olarak kullanılan kod yapıları veya standart kod oluşturabilen kod parçacıkları veya şablonları destekler. Bunlar size zaman kazandırabilir ve kodunuzda tutarlılığı korumanıza yardımcı olabilir.
Otomatik tamamlama ve IntelliSense : Modern IDE'ler ve kod düzenleyiciler genellikle akıllı kod tamamlama sağlar; bu da mevcut bağlama göre değişkenler, yöntemler veya anahtar kelimeler için tamamlamalar önerir. Bu, kodlama sürecinizi hızlandırabilir ve yazım hatası veya sözdizimi hatası olasılığını azaltabilir.
Entegre hata ayıklama : IDE'nize entegre edilmiş hata ayıklama araçları, geliştirme ortamınızdan ayrılmadan kesme noktaları belirlemenize, kodunuzda adım adım ilerlemenize ve değişkenleri incelemenize olanak tanır. Bu kusursuz hata ayıklama deneyimi, sorunları daha verimli bir şekilde bulmanıza ve düzeltmenize yardımcı olabilir.
Sürüm kontrolü entegrasyonu : Birçok IDE, Git gibi sürüm kontrol sistemleri için yerleşik destek sunar. Bu entegrasyon, değişiklikleri gerçekleştirmek, dallar oluşturmak ve çakışmaları çözmek gibi genel sürüm kontrol görevlerini IDE'nizde basitleştirebilir.
Kod analizi ve astarlama : Gerçek zamanlı kod analizi ve astarlama araçları, kodunuzu yazarken sözdizimi hataları, kullanılmayan değişkenler veya kod stili ihlalleri gibi olası sorunları tanımlamanıza yardımcı olabilir. Bu, hata ayıklama konusunda size zaman kazandırabilir ve kodunuzun en iyi uygulamalara bağlı kalmasını sağlayabilir.
Yeniden düzenleme araçları : Bazı IDE'lerde yöntemlerin çıkarılması, değişkenlerin yeniden adlandırılması veya yöntem imzalarının değiştirilmesi gibi kodunuzu otomatik olarak yeniden düzenleyebilecek yerleşik araçlar bulunur. Bu araçlar, manuel çaba harcamadan temiz ve verimli kod tutmanıza yardımcı olabilir.
Görev ve proje yönetimi : Birçok IDE ve düzenleyici, görevleri yönetmenize, yapılacaklar listeleri oluşturmanıza ve projelerinizdeki ilerlemeyi izlemenize olanak tanıyan özelliklere sahiptir. Bu, düzenli kalmanıza ve çalışmalarınızı daha etkili bir şekilde önceliklendirmenize yardımcı olabilir.
Özelleştirme : Çoğu IDE ve düzenleyici, temalar, eklentiler ve yapılandırma seçenekleri dahil olmak üzere yüksek düzeyde özelleştirme sunar. Geliştirme ortamınızı tercihlerinize göre uyarlamak, daha rahat ve verimli çalışmanıza yardımcı olabilir.
Entegre terminal : IDE'nizde entegre bir terminale sahip olmak, pencereler arasında geçiş yapmadan komutları çalıştırmanıza, projenizi oluşturmanıza veya sürüm kontrolüyle etkileşime girmenize olanak sağlayarak size zaman kazandırabilir.
Bu araçlar ve özellikler kodlama deneyiminizi önemli ölçüde iyileştirerek sizi daha verimli ve üretken hale getirebilir. IDE'nizin veya kod düzenleyicinizin yeteneklerini keşfetmeye zaman ayırın ve iş akışınızı geliştirebilecek yeni araçları veya eklentileri denemekten çekinmeyin.
🤔 Şimdi konuşuyoruz! Liste tamamen kapsamlı değil (örneğin, otomatik kod biçimlendiricileri kaçırıyor ve şaşırtıcı bir şekilde hala AI asistanlarını kaçırıyor - ChatGPT kendi yeteneklerinin farkında değil mi? Yoksa çok mütevazi mi?) ama yeterince sağlam ve geniş yeni başlayan bir geliştirici için gerçekten faydalı olabilir. Ayrıca, artık modern geliştirici araçlarının zenginliğinin farkında olduğunuza göre, yavaş yavaş daha da derinlere inebilirsiniz.
💬Bana verdiğiniz ipuçlarından biri de "Ana sürüm kontrolü" idi. Peki bu gerçekten hızlı ve kolay bir yaşam tüyosu mu? Bana sürüm kontrolünde tam anlamıyla ustalaşmak uzun bir süreç gibi görünüyor. Hemen uygulanabilecek sürüm kontrolüyle ilgili hızlı ipuçları var mı?
🤖 Sürüm kontrolünde uzmanlaşmanın daha uzun bir süreç olabileceği konusunda haklısınız ancak Git gibi sürüm kontrol sistemlerini daha etkili bir şekilde kullanmak için hemen uygulayabileceğiniz bazı hızlı ipuçları ve en iyi uygulamalar var. Burda biraz var:
Sık sık ve küçük birimler halinde taahhütte bulunun : Tek, mantıksal bir değişiklik içeren küçük, odaklanmış taahhütler yapın. Bu, projenin geçmişini anlamayı, sorunları tespit etmeyi ve gerekirse değişiklikleri geri almayı kolaylaştırır.
Açıklayıcı taahhüt mesajları yazın : Değişiklik yaptığınızda, değişiklikleri ve amaçlarını açıklayan açık ve kısa taahhüt mesajları yazın. Bu, sizin ve ekibinizin proje geçmişini anlamanıza yardımcı olur ve daha sonra belirli değişiklikleri bulmanızı kolaylaştırır.
Dalları kullan : Yeni özellikler, hata düzeltmeleri veya deneyler için dallar oluşturun. Bu, ana şubenizi sabit tutar ve ana kod tabanını etkilemeden birden fazla görev üzerinde paralel olarak çalışmanıza olanak tanır.
Düzenli olarak birleştir : Değişikliklerinizi güncel tutmak ve değişikliklerinizi entegre etme zamanı geldiğinde birleştirme çakışmalarını en aza indirmek için değişiklikleri ana daldan özellik dallarınıza düzenli olarak birleştirin.
Basmadan önce çekin : Değişikliklerinizi uzak depoya göndermeden önce, yerel deponuzun güncel olduğundan emin olmak için daima en son değişiklikleri uzaktan çekin. Bu, çatışmaların önlenmesine ve daha sorunsuz bir işbirliği deneyiminin sağlanmasına yardımcı olabilir.
.gitignore'u benimseyin : Geçici dosyalar, derleme yapıları veya IDE'ye özgü dosyalar gibi izlenmesi gerekmeyen dosyaları hariç tutmak için bir .gitignore dosyası kullanın. Bu, deponuzun temiz kalmasını ve temel koda odaklanmasını sağlar.
Bu hızlı ipuçları, sürüm kontrol sistemlerini daha etkili bir şekilde kullanmanıza ve iş akışınızı kolaylaştırmanıza yardımcı olabilir. Sizi bir gecede sürüm kontrol uzmanı yapamasalar da, becerilerinizi öğrenmeye ve geliştirmeye devam ederken üzerine inşa edebileceğiniz sağlam bir temel olarak hizmet edebilirler.
🤔 Oldukça şık. Her ne kadar bu ipuçları sizi tam sürüm kontrolünde uzmanlığa yönlendirmese de, artık daha uygulanabilir durumdalar ve genel olarak, yeni başlayanlar için tavsiyeler göz önüne alındığında oldukça iyiler.
Bazı noktalar biraz belirsiz kalıyor, örneğin "Dalları kullan". Sürüm kontrolü dallanma stratejileri geniş ve karmaşık bir konudur ve bu özel nokta, daha fazla araştırma yapılmaksızın pek uygulanabilir değildir. Ancak bu tek bir aykırı değerdir ve en azından daha derinlemesine araştırmalar için net bir başlangıç noktası sağlar.
Genel olarak fena değil!
💬Bana "Temiz kodu oku" tüyosunu verdin. Ancak yeni başlayan biri olarak hangi kodun temiz olduğunu nasıl bileceğim? Nasıl tanınır? Peki okunacak böyle bir kodu nerede bulabilirim?
🤖 Yeni başlayan biri olarak temiz kodu ilk bakışta tanımak zor olabilir. Ancak pratik yaparak ve iyi yazılmış kodla tanışarak, temiz kodun nelerden oluştuğuna dair bir anlayış geliştirmeye başlayacaksınız. Temiz kodun bazı genel kuralları ve özellikleri şunlardır:
Okunabilirlik : Temiz kodun okunması ve anlaşılması kolaydır. Açık bir yapıya, anlamlı değişken ve işlev adlarına ve uygun girintiye sahiptir. Aynı zamanda tutarlı adlandırma kurallarına ve stil kurallarına da uyar.
Modülerlik : Temiz kod, tek bir görevi gerçekleştiren küçük, odaklanmış işlevler veya yöntemler halinde düzenlenir. Her modülün tek bir sorumluluğu olmalı ve kod mantıksal bileşenlere bölünmelidir.
Bakım Kolaylığı : Temiz kodun değiştirilmesi, genişletilmesi ve yeniden düzenlenmesi kolaydır. Kodun kopyalanmasını önler (DRY prensibi) ve değişiklik yapıldığında hata oluşma olasılığını en aza indirmek için en iyi uygulamaları takip eder.
Belgeler ve yorumlar : Temiz kod, kodun amacını ve işlevselliğini açıklayan yorumlarla iyi bir şekilde belgelenmiştir. Yorumlar kısa ve öz olmalı ve yalnızca kodun okunmasıyla hemen anlaşılamayan bilgileri sağlamalıdır.
Verimlilik : Temiz kod, performans ve kaynak kullanımı açısından verimlidir. Gereksiz karmaşıklığı önler ve kullanılan algoritmalar ve veri yapıları eldeki soruna çok uygundur.
Okunacak ve öğrenilecek temiz kod bulmak için aşağıdaki kaynakları göz önünde bulundurun:
Popüler açık kaynaklı projeler : GitHub gibi platformlardaki birçok popüler açık kaynaklı proje, birden fazla katkıda bulunan kişi tarafından incelenen ve geliştirilen yüksek kaliteli kodlara sahiptir. Temiz kod örneklerini bulmak için çalıştığınız dildeki veya çerçevedeki projeleri keşfedin.
Kodlama için en iyi uygulamalar : Çalıştığınız programlama dili için en iyi kodlama uygulamalarıyla ilgili makaleler, kitaplar veya kurslar arayın. Bu kaynaklar genellikle temiz kod örnekleri ve bunun nasıl yazılacağına ilişkin yönergeler sağlar.
Kod incelemeleri : Ekibiniz içindeki kod incelemelerine katılın veya deneyimli geliştiricilerden veya mentorlardan geri bildirim alın. Geri bildirimlerini ve önerilerini gözlemlemek, temiz kodu tanımayı öğrenmenize ve kendi kodlama stilinizi geliştirmenize yardımcı olabilir.
Kodlama zorlukları : LeetCode, HackerRank veya Codewars gibi web siteleri, diğer kullanıcılar tarafından sunulan çözümlerin yanı sıra kodlama zorlukları da sunar. Bu çözümleri gözden geçirmek, problem çözmeye yönelik farklı yaklaşımları öğrenmenize ve temiz kod örnekleriyle tanışmanıza yardımcı olabilir.
Temiz kodu tanımanın ve yazmanın zamanla gelişen bir beceri olduğunu unutmayın. Daha fazla kod okuyup yazdıkça, temiz kodu belirleme ve kendi çalışmalarınızda en iyi uygulamaları benimseme konusunda daha ustalaşacaksınız.
🤔 Bu sefer sonuç en iyi ihtimalle berbat.
Cevabın ilk kısmı, temiz kodu, temiz kod olmanın çok yüksek düzeyde ve belirsiz ilkelerine bağlı kalmasından tanıyabileceğinizi belirtir (bunlardan bazıları, yorumlar ve verimlilik gibi, hatta tartışmalıdır - örneğin, Kodun temiz ve okunabilir olması için gerçekten verimli olması gerekiyor mu?).
İkinci bölüm de vur ya da kaçır. Kod incelemelerine katılmak iyi bir tavsiyedir (her ne kadar daha kıdemli geliştiricilerin kodlarından bilgi edinmek için yalnızca kodunuzu incelemeniz değil, aynı zamanda mümkün olduğunca çok sayıda incelemeyi kendiniz yapmanız gerektiği daha fazla vurgulanabilir). Kodlamanın en iyi uygulamalarıyla ilgili kitap ve makaleler okumak sağlam bir tavsiyedir ancak oldukça açıktır ve fazla değer katmaz. Açık kaynaklı projelerden ve kodlama zorluğu web sitelerinden öğrenmek potansiyel olarak harika bir tavsiyedir, ancak bu kaynaklar genellikle kötü kod da içerir ve yine de yeni başlayan birinin hangisinin hangisi olduğunu nasıl anlayabileceği bilmecesini çözemez.
Biraz daha derine inmeye çalışalım:
💬 Okuyabileceğim ve öğrenebileceğim temiz kod bulmak için popüler açık kaynaklı projelere bakabileceğimi söyledin, çünkü çoğu yüksek kaliteli koda sahip. Ancak açık kaynaklı projelerin birçoğunun kodu da düşük kalitededir. Hangi açık kaynak projenin yüksek kaliteli olduğunu, hangisinin olmadığını nasıl anlarım?
🤖 Açık kaynaklı projelerin hepsinin yüksek kaliteli kodlara sahip olmadığı konusunda haklısın. Yüksek kaliteli açık kaynaklı projeleri belirlemek için aşağıdaki faktörleri göz önünde bulundurabilirsiniz:
Popülerlik : GitHub gibi platformlarda çok sayıda yıldızın, çatalın veya izleyicinin olduğu projeler genellikle projenin topluluk tarafından iyi kabul edildiğini gösterir. Popülerlik kod kalitesinin garantisi olmasa da yararlı bir gösterge olabilir.
Aktif bakımcılar ve katkıda bulunanlar : Yüksek kaliteli projelerde aktif bakımcılar ve çok çeşitli katkıda bulunanlar bulunur. Düzenli taahhütler, güncellemeler ve hata düzeltmeleri geçmişi olan projeleri arayın. Katkıda bulunanların sayısı ve aktif bir topluluk, kod tabanının sürekli olarak iyileştirildiğinin ve iyileştirildiğinin bir işareti olabilir.
Açık belgeleme : İyi belgelenmiş projeler genellikle iyi korunan ve yüksek kaliteli bir kod tabanının işaretidir. Kapsamlı README dosyalarını, API belgelerini ve kullanım kılavuzlarını içeren projeleri arayın.
Kod incelemeleri ve tartışmaları : Projenin çekme isteklerini ve sorun tartışmalarını kontrol edin. Sağlıklı bir projede kapsamlı kod incelemeleri, yapıcı geri bildirimler ve iyileştirmeler ile hata düzeltmeleri hakkında aktif tartışmalar bulunacaktır.
Kodlama standartlarına bağlılık : Yüksek kaliteli projeler genellikle kodlama standartlarını ve kullandıkları programlama dili veya çerçevesi için en iyi uygulamaları takip eder. Tutarlı biçimlendirme, adlandırma kuralları ve kod organizasyonu arayın.
Otomatik test : Güçlü bir otomatik test paketine sahip projeler, bakımcıların kod kalitesine ve yazılımın beklendiği gibi çalışmasını sağlamaya önem verdiğini gösterir. Yüksek test kapsamına ve her taahhüt veya çekme isteğinde testler çalıştıran sürekli entegrasyon (CI) hattına sahip projeleri arayın.
Bağımlılıklar ve lisanslama : Yüksek kaliteli projeler, ilgili lisanslarla birlikte açık bir bağımlılık listesine sahip olmalıdır. Bu durum, yürütücülerin projenin hukuki ve operasyonel yönlerine dikkat ettiğini göstermektedir.
Yüksek kaliteli açık kaynaklı projeler aramaya başlamak için, çeşitli alanlardaki popüler ve saygın projeleri bir araya getiren GitHub'daki Harika Listeler gibi seçilmiş listeleri veya koleksiyonları keşfedebilirsiniz. Ayrıca saygın kuruluşlar veya sektörde iyi bilinen geliştiriciler tarafından yürütülen projelere de göz atabilirsiniz.
Yüksek kaliteli projelerin bile geliştirilebilecek alanları olabileceğini unutmayın. Daha fazla deneyim kazandıkça temiz koda ilişkin daha iyi bir anlayış geliştirecek ve çeşitli açık kaynaklı projelerin kalitesini değerlendirmek için daha donanımlı olacaksınız.
🤔 Bu cevap yine yerinde. Projenin popülerliği veya iyi dokümantasyon gibi faktörler mutlaka temiz kodu garanti etmese de, bunların hepsi bir arada iyi bir proxy'dir; muhtemelen alabileceğiniz kadar iyi, çünkü hiçbir zaman kesin garantiler yoktur. Her ne kadar kaliteden ziyade popülerliğin bir göstergesi olsalar da, seçilmiş listelere bakma tavsiyesi makul bir başlangıç noktası sağlıyor. Örneğin GitHub araması aynı zamanda popüler ve aktif açık kaynaklı projeleri bulmanın da harika bir yolu olduğundan, kapsamlı değildir. Ancak temiz kodu tanımanın oldukça öznel ve zor bir konu olduğu göz önüne alındığında, bu cevap oldukça uygundur. Daha da derine inmeyi deneyebiliriz - ancak bu gönderinin uzunluğunu kontrol altında tutmam gerekiyor...
💬Bana verdiğiniz yaşam tüyolarından biri de kodumun amacını ve işlevselliğini açıklayan anlamlı yorumlar yazmaktı. Bu konuyu detaylandırabilir misiniz? Hangi yorumları anlamlı buluyorsunuz? Kodumun tamamı için her zaman yorum yazmalı mıyım? Yorumların ne zaman ve nasıl yazılacağına dair iyi bir buluşsal yöntem var mı?
🤖 Anlamlı yorumlar yazmak, temiz ve bakımı kolay kod yazmanın önemli bir yönüdür. Anlamlı yorumlar, kodun okunmasıyla hemen anlaşılamayan ek bilgi ve bağlam sağlamalıdır. Yorumların ne zaman ve nasıl yazılacağına ilişkin bazı yönergeler aşağıda verilmiştir:
Karmaşık veya açık olmayan kodu açıklayın : Bir kod parçası karmaşıksa veya projeye aşina olmayan biri için anlaşılması zorsa, bir yorum uygulamanın arkasındaki mantığı açıklamaya yardımcı olabilir veya algoritmaya üst düzey bir genel bakış sağlayabilir.
Varsayımları ve sınırlamaları belgelendirin : Kodunuz belirli varsayımlara dayanıyorsa veya sınırlamalar varsa, bunları yorumlarda belgelemek önemlidir. Bu, başka birinin (hatta sizin) daha sonra kodu değiştirmesi durumunda ortaya çıkabilecek sorunların veya yanlış anlamaların önlenmesine yardımcı olur.
İşlevlerin ve sınıfların amacını netleştirin : İşlev ve sınıf adlarının açıklayıcı olması gerekirken, kısa bir yorum, bir işlevin veya sınıfın amacı ve beklenen davranışı hakkında ek bağlam sağlayabilir.
Geçici çözümleri veya hack'leri açıklayın : Belirli bir sorunu veya sınırlamayı gidermek için bir geçici çözüm veya hack uygulamanız gerekiyorsa, bunun nedenini ve olası yan etkileri bir yorumda belgeleyin. Bu, gelecekteki bakımcıların geçici çözümün amacını anlamalarına ve potansiyel iyileştirmeleri değerlendirmelerine yardımcı olur.
Harici kaynaklara referans verin : Kodunuz bir araştırma makalesi, algoritma veya üçüncü taraf kitaplığı gibi belirli bir kaynağı temel alıyorsa, bu kaynağa referans içeren bir yorum ekleyin. Bu, proje üzerinde çalışan diğer kişiler için bağlam ve arka plan bilgileri sağlanmasına yardımcı olur.
Etkili yorumların nasıl yazılacağına dair bazı ipuçları:
Kısa ve öz olun : Yorumlar kısa ve öz olmalıdır. Uzun paragraflar yazmaktan veya kodda zaten açık olan bilgilerin tekrarlanmasından kaçının.
Yorumları güncel tutun : Kodunuz geliştikçe yorumlarınızın alakalı kalmasını sağlayın. Kodu değiştirdiğinizde yorumları güncelleyin, böylece kodun mevcut durumunu doğru şekilde yansıtsınlar.
Açık olanı belirtmekten kaçının : Kodun ne yaptığını basitçe yeniden ifade eden yorumlar yazmaktan kaçının. Kodun kendisinden hemen anlaşılamayan bağlam, mantık veya açıklamalar sağlamaya odaklanın.
Her satıra veya kod bloğuna yorum yazmanıza gerek yok. Bunun yerine, değer kattığı ve kodun anlaşılmasını geliştirmeye yardımcı olduğu yerlere yorum yapmaya odaklanın. İyi yazılmış kodun çoğunlukla kendini açıklayıcı olması gerektiğini unutmayın; bu nedenle gerektiğinde ek olarak yorumları kullanarak açık ve anlamlı kod yazmaya öncelik verin.
🤔 Bu gerçekten çok iyi bir cevap. Başlangıçtaki ipucu belirsizdi ve potansiyel olarak aşırı yorum yapılmasına yol açabilecek yoruma yer bırakıyordu, ancak bu ayrıntılandırma bunu iyi bir şekilde açıklığa kavuşturuyor ve %100 isabetli. Yorum yazmaya tam olarak bu şekilde yaklaşmanızı tavsiye ederim.
Burada ve orada birkaç küçük yanlış adım vardı, ancak genel olarak sonuçlar şaşırtıcı derecede iyi.
Bazı cevaplar çok açıktı, bazıları fikir meselesiydi ama hiçbiri açıkça yanlış değildi ve birçoğu gerçekten iyi ve eyleme dönüştürülebilirdi. Ayrıca tavsiyelerin kapsamını ve çeşitliliğini de beğendim; hatta sağlığınıza dikkat etmenizle ilgili bir noktayı da içeriyordu!
İlk cevaplar yüzeyseldir; takip sorularıyla en azından birkaç seviye daha derine inilmedikçe pek bir değer katmazlar. Ancak bu akışa alışırsanız oldukça sorunsuz ilerliyor. Önceden bir sürü bilgiyle boğulmazsınız, bunun yerine yavaş yavaş keşfedebilir, yalnızca ilgilendiğiniz veya anlamadığınız konulara daha derinlemesine dalabilirsiniz. Hatta bunun örneğin kitap okumaktan veya kurs izlemekten çok, gerçek bir insan akıl hocasıyla çalışmaya benzediğini bile söyleyebilirim.
ChatGPT ile çalışırken gerçek bir insan akıl hocasına kıyasla üzerinizde biraz daha fazla yük vardır. Bir insan ses tonunuzdan, yüz ifadenizden ve beden dilinizden daha fazla ipucu yakalayabilir ve davranışınıza yanıt olarak tartışmayı daha proaktif bir şekilde yönlendirebilir. Ancak ChatGPT ile çalışırken, alabileceği tek ipucu doğrudan sorularınızdır; dolayısıyla deneyimin kalitesi, mentorunuzun deneyimine veya duygusal zekasına değil, yalnızca net sorular oluşturma yeteneğinize bağlıdır. Bununla birlikte, doğru soruların nasıl sorulacağını öğrenmek çok da zor değildir ve eğer bunu yaparsanız, etkileşiminizden yine de birçok değer elde edebilirsiniz.
Yeni başlayanlar için daha zor olan kısım, yüzeysel cevaplardan daha derin cevaplara geçmek için tam olarak ne sorulması gerektiğini bulmak olabilir. Belirli bir alanda derinlemesine uzmanlığınız yoksa, bu genellikle açık olmaktan uzaktır. Ancak bu durum, "Neden bu yanıtı seçtiniz?", "Daha fazla detaylandırabilir misiniz?", "Bu yanıt gerçekten en iyisi mi?" gibi daha genel "ayrıntılı inceleme" soruları sormayı öğrenerek hafifletilebilir. Tek iyi cevap bu mu?", "Artıları ve eksileri nelerdir?", "Alternatifler neler olabilir?", "Benzer başka teknikler var mı?" vb. Bunun gibi soruları sormakta ustalaşmak, günlük işlerinizde de size fayda sağlayacaktır: Gereksinimleri açıklarken, takım arkadaşlarınızla beyin fırtınası yaparken ve hatta gerçek bir insan akıl hocasıyla çalışırken, bu başlı başına değerli bir eğitimdir.
Özetlemek gerekirse, bu kadar sınırlı bir testten gözlemleyebildiğim kadarıyla kesinlikle tavsiye ederim .
Gerçek bir insan mentorun tam yerini tutamaz, ancak erişiminiz yoksa ChatGPT'yi kesinlikle denemelisiniz. Bir akıl hocanız olsa bile, ChatGPT'ye çok daha kolay erişilebildiği için her ikisinden de yararlanmaya değer. ChatGPT ile başlayabilir (ve onu daha sık kullanabilirsiniz) ve ardından gerçek akıl hocanızdan yanıtlarını değerlendirmesini, bunları genişletmesini veya daha basit vakalar için ChatGPT'ye sadık kalarak daha zor alanlara daha derinlemesine dalmasını isteyebilirsiniz.
Belirli bir alanda öğrenilecek şeyler hakkında üst düzey bir genel bakışla başlamak, arazinin genel yapısını anlamak ve ardından seçilen konuları daha derinlemesine incelemek için ChatGPT'yi kullanmak da faydalı olabilir. Böyle bir genel bakış sağlayan roadmap.sh veya yazdığım rehber gibi pek çok iyi kaynak var.