Ünite 3 / 12

Kod Okuma, Açıklama ve Yeni Kod Tabanına Uyum

Kazanimlar:

  • Yabancı bir kod tabanını AI ile katman katman haritalayıp bir özelliği uçtan uca takip edebilme
  • Karmaşık fonksiyonları adım adım açıklattırıp veri akışını izleyebilme
  • AI açıklamasını bir hipotez olarak görüp kritik iddiaları kodda doğrulayabilme

Geliştiriciler kod yazmaktan çok kod okur. Yeni bir işe başladığınızda, başka birinin bıraktığı bir servisi devraldığınızda ya da açık kaynak bir kütüphaneye katkı yapacağınızda ilk göreviniz "burada ne oluyor?" sorusuna yanıt bulmaktır. Yapay zeka bu keşif işini haftalar yerine saatlere indirebilir — ama yalnızca doğru sorularla ve doğrulama refleksiyle kullanıldığında.

Bu ünitede AI'yı bir "kod rehberi" gibi kullanmayı öğreniyoruz: yabancı bir kod tabanını haritalamak, karmaşık bir fonksiyonu sade dile çevirmek, bir veri akışını takip etmek ve bir kütüphanenin nasıl kullanılacağını çözmek. Buradaki altın kural şudur: AI'nın açıklaması bir hipotezdir; onu kodun kendisiyle doğrularsınız.

Neden Kod Açıklama Güçlü Ama Riskli?

Bir LLM, kod parçasını okuyup "bu fonksiyon bir kullanıcının oturum jetonunu (token) yeniliyor" gibi insan diline çevirmede çok başarılıdır; çünkü benzer milyonlarca örnekten örüntü öğrenmiştir. Bu, özellikle uzun ve iç içe geçmiş fonksiyonlarda müthiş bir zaman kazancıdır.

Risk şurada: model bazen kodun gerçekte ne yaptığını değil, ne yapıyor gibi göründüğünü anlatır. Değişken adı isAdmin ama içerideki mantık ters çevrilmişse, model isme bakıp yanlış özet çıkarabilir. Bu yüzden açıklamayı kritik kararlarınıza temel yapmadan önce, iddia edilen davranışı ilgili satırlarda gözle kontrol etmelisiniz. Açıklama sizi doğru yere götürür; son sözü kod söyler.

Dikkat: AI'nın "bu kod X yapıyor" özetini, güvenlik veya para akışı içeren bir kararda tek başına kanıt saymayın. Özet, nereye bakacağınızı gösteren bir harita; onayı kodda verirsiniz.

Yabancı Bir Kod Tabanını Haritalamanın Adımları

  1. Üst düzeyden başlayın. Önce klasör yapısını ve giriş noktalarını (main, uygulama başlatma, ana yönlendirici) tanıyın. AI'ya "bu dizin yapısına göre uygulamanın katmanları neler?" diye sorun.
  2. Bir özelliği uçtan uca takip edin. "Kullanıcı giriş yaptığında hangi dosyalar, hangi sırayla devreye giriyor?" — tek bir akışı izlemek, tüm mimariyi okumaktan daha öğreticidir.
  3. Terimleri yerelleştirin. Projeye özgü kavramları ("tenant", "ledger", "job runner") AI'ya sordurup kod içindeki karşılıklarını bulun.
  4. Karmaşık fonksiyonu sadeleştirtin. Uzun bir fonksiyonu adım adım açıklattırın, sonra bu adımları kodda işaretleyin.
  5. Doğrulayın. Anladığınızı sınamak için küçük bir değişiklik yapıp testleri çalıştırın; anlayışınız yanlışsa test hemen söyler.

Üç Mini Vaka

Vaka 1 — Devralınan servis 2 günden 3 saate indi. Bir geliştirici, ayrılan bir meslektaşından 4.000 satırlık bir ödeme uzlaştırma (reconciliation) servisini devraldı. AI'ya modülleri özetletip bir ödeme akışını uçtan uca takip ettirdi; kritik iki fonksiyonu kodda bizzat doğruladı. Klasik "kör okuma" ile 2 gün tahmin edilen keşif, doğrulamalı AI yöntemiyle yaklaşık 3 saatte tamamlandı.

Vaka 2 — Yanıltıcı isim tuzağı. Bir fonksiyonun adı validateAndSave idi ama AI özeti "önce doğrular, sonra kaydeder" dedi. Geliştirici koda inince kaydetmenin doğrulamadan önce yapıldığını, doğrulamanın ise yalnızca log'a yazdığını gördü. Bu, üretimdeki bir hata biletinin gerçek kök nedeniydi. Kodda doğrulama olmasa, yanlış özet hatayı gizleyecekti.

Vaka 3 — Yeni kütüphane öğrenimi hızlandı. Ekip, tanımadığı bir kuyruk (message queue) kütüphanesini entegre edecekti. AI'ya "bu kütüphanede bir tüketici (consumer) nasıl kurulur, hata halinde yeniden deneme nasıl yapılır?" diye sorup örnek ürettirdiler; ardından örneği resmî dokümanla karşılaştırıp bir farkı (eski sürüm API'si) düzelttiler. Öğrenme süresi yarı yarıya kısaldı.

Dört Kopyalanabilir Şablon

Kod tabanı haritalama:

Aşağıda bir projenin dizin/dosya listesi var. 1) Uygulamanın katmanlarını (giriş, iş mantığı, veri erişimi vb.) çıkar.2) Bir "{{örnek özellik}}" isteğinin muhtemel dosya yolculuğunu sırala.3) Emin olmadığın yerleri "doğrulanmalı" diye işaretle.{{dizin_listesi}}

Fonksiyon açıklama (adım adım):

Bu fonksiyonu satır gruplarına bölerek, her grubun ne yaptığını sade Türkçe anlat.Sonunda: girdi, çıktı, yan etkiler (veritabanı/dosya/ağ) ve olası kenar durumlarılistele. Emin olmadığın davranışları AYRI bir "doğrulanmalı" başlığında topla.{{fonksiyon}}

Veri akışı takibi:

"{{değişken/veri}}" değeri nereden geliyor, hangi dönüşümlerden geçiyor, nereyeyazılıyor? Kod içindeki fonksiyon adlarını kullanarak bir akış zinciri çıkar.İlgili kod:{{kod_parçaları}}

Kütüphane kullanımını öğrenme:

{{kütüphane}} ile {{amaç}} yapmak istiyorum. Minimal, çalışan bir örnek ver.Kullandığın her fonksiyonun gerçekten bu kütüphaneye ait olduğundan emin ol;emin değilsen "resmî dokümandan doğrula" diye işaretle. Sürüm: {{sürüm}}.

Zayıf prompt / Güçlü prompt

Zayıf: "Bu kodu açıkla." (Neyi merak ediyorsunuz? Hangi seviyede? Ne yapacaksınız?)
Güçlü: "Bu fonksiyonu devralıyorum ve içindeki yeniden deneme (retry) mantığını değiştireceğim. Fonksiyonu adım adım açıkla, özellikle hata halinde kaç kez ve hangi aralıkla yeniden denediğini net söyle; emin olmadığın kısımları 'doğrulanmalı' diye işaretle. [kod]"

Güçlü sürüm, amacınızı (retry mantığını değiştireceğim) ve odak noktasını verir; böylece açıklama genel bir özet değil, işinize yarayan bir rehber olur.

Görev

AI iyi yapar

Mutlaka doğrula

Genel mimari özeti

Katmanları çıkarma

Gerçek çağrı sırası

Karmaşık fonksiyon

Adım adım anlatım

Ters mantık, yan etkiler

Veri akışı

Zinciri taslaklama

Koşullu dallar, atlanan yollar

Kütüphane kullanımı

Örnek üretme

API'nin gerçekliği ve sürümü

İnsan Anlayışının Yerini Tutmaz

AI açıklaması, öğrenmenin yerine geçmez; onu hızlandırır. Bir kod tabanını gerçekten "sahiplenmek", zihinsel bir modelini kurmak demektir ve bu model ancak siz kodu okuyup küçük değişiklikler yapıp sonucu gördükçe oturur. AI'yı, bir mentorun size "şuraya bak, burası önemli" demesi gibi kullanın — ama gördüğünüz yeri kendi gözünüzle okuyun.

İpucu: Bir fonksiyonu anladığınızı düşündüğünüzde, AI'dan onu "bir cümlede özetle" isteyin; sonra kendi cümlenizle karşılaştırın. İki cümle çelişiyorsa, ya siz ya model bir şeyi kaçırmıştır — ve bunu kodda çözersiniz.

Sık yapılan hatalar

  • Özeti kanıt saymak. Açıklamayı doğrulamadan koda dair karar vermek, yanıltıcı isimlerin tuzağına düşmektir.
  • Fazla büyük parça yapıştırmak. 2.000 satırı tek seferde özetletmek yüzeysel ve hataya açık sonuç verir; parçalara bölün.
  • Amaç belirtmemek. "Ne yapacağınızı" söylemezseniz açıklama genel kalır ve işinize odaklanmaz.
  • Kütüphane örneğini doğrulamamak. Model eski veya var olmayan API çağırabilir; resmî dokümanla karşılaştırın.
  • Öğrenmeyi tümüyle dışa vermek. Kod tabanını hiç okumadan yalnızca özetlerle çalışmak, ilk gerçek hatada sizi çaresiz bırakır.

Özetle

AI, yabancı bir kod tabanını keşfetmede güçlü bir rehberdir: mimariyi haritalar, karmaşık fonksiyonları sadeleştirir, veri akışını izler, kütüphane kullanımını öğretir. Ama her açıklama bir hipotezdir. Amacınızı net verin, parçalara bölün, ve modelin "doğrulanmalı" dediği (ve demediği) her kritik iddiayı kodda ve testte doğrulayın. Rehber AI'dır; haritayı okuyan ve sorumluluğu taşıyan sizsiniz.

Uygulama görevi

Tanımadığınız veya yeni devraldığınız bir modül seçin. Önce "kod tabanı haritalama" şablonuyla katmanları ve bir özelliğin dosya yolculuğunu çıkarttırın. Sonra o özelliğin en kritik fonksiyonunu "fonksiyon açıklama" şablonuyla adım adım açıklattırın. Son olarak modelin "doğrulanmalı" diye işaretlediği en az iki iddiayı kodda bizzat kontrol edin ve doğru mu yanlış mı olduğunu not edin.

Kontrol listesi

  • [ ] AI açıklamasını bir hipotez olarak görüp kodda doğruluyorum.
  • [ ] Kod açıklarken amacımı ve odak noktamı prompt'a ekliyorum.
  • [ ] Büyük kod tabanını parçalara bölerek özetletiyorum.
  • [ ] Yanıltıcı isim/ters mantık tuzaklarına karşı kritik iddiaları satırda kontrol ediyorum.
  • [ ] Kütüphane örneklerini resmî dokümanla ve sürümle karşılaştırıyorum.
  • [ ] AI'yı öğrenmeyi hızlandıran bir rehber olarak kullanıyor, öğrenmenin yerine koymuyorum.