Giriş

Bu rehber, ChatGPT'yi yazılım geliştirme süreçlerinde hata ayıklama ve kod iyileştirme (refactoring) için nasıl etkili kullanacağınızı gösterir. Doğru yapılandırılmış prompt'lar, hataları daha hızlı tespit etmenize, güvenilir düzeltmeler önermenize ve kodunuzu daha sürdürülebilir hâle getirmeye yardımcı olur. Aşağıdaki örnekler ve şablonlar, hem hızlı tamirler hem de daha kapsamlı refactor çalışmaları için uygulanabilir.

Hazır prompt koleksiyonları ve refactoring şablonları için örnek referanslar: AI Prompt Library (70+ şablon), GitHub - chatgpt-refactoring-prompts ve Keep My Prompts.

Neden ChatGPT? Hangi görevlerde yardımcı olur

ChatGPT, kodu anlamaya, hataların olası nedenlerini listelemeye, küçük düzeltme yamaları önermeye ve kodu daha okunur hâle getirmek için yeniden yapılandırma fikirleri sunmaya uygundur. Bu tür kullanım örnekleri ve hazır prompt koleksiyonları, geliştiricilerin tekrarlayan görevleri hızlandırarak verimliliklerini artırmalarına yardımcı olabilir (AI Prompt Library, Detailed Prompt).

Hata ayıklama ve refactoring için hazırlık: ne göndermelisiniz

  • Minimal reproducible example: Yapılabilecek en küçük çalışan kod parçacığı. Bu, modelin sorununuzu izole etmesini sağlar.
  • Hata mesajı ve stack trace: Tam metin; varsa terminal çıktısını ekleyin.
  • Giriş verisi/örnek: Hata oluşan giriş veya API çağrısı örneği.
  • Çevre bilgisi: Programlama dili ve sürümü, kütüphane sürümleri, işletim sistemi veya container ortamı.
  • Beklenen davranış: Kodun ne yapması gerektiğini açıkça yazın. 'Hata var' demek yeterli değildir.
  • Kısıtlar: Performans hedefleri, bellek sınırı, kod stili veya güvenlik gereksinimleri.
  • Gizlilik uyarısı: Gizli anahtarlar, kişisel veriler veya proje içi özel bilgiler paylaşmayın.

Etkili prompt yapısı: kısa şablon

  • 1) Bağlam: dil, sürüm, ortam ve kısa proje tanımı
  • 2) Kod: minimal örnek veya ilgili fonksiyon
  • 3) Hata: tam mesaj, beklenen/gerçek davranış
  • 4) İstenen çıktı formatı: adım adım açıklama, düzeltilmiş kod, test
  • 5) Kısıtlar: performans, güvenlik, stil

Örnek cevap formatı belirtmek faydalıdır: 'Cevabı şu formatta ver: 1) Kısa neden, 2) Düzeltme (kod), 3) Önerilen birim test (ad ve beklenen çıktı), 4) Riskler ve ters etkiler'.

Pratik prompt şablonları (kopyala-yapıştır kullanımı)

1. Hızlı hata tespiti ve minimum yama

Bağlam: Dil: Python 3.11, Çalışma ortamı: Docker, Bağımlılıklar: requests 2.31.
Kod: def get_user(users, user_id):
return users[user_id]
Hata: KeyError: 'user_id'
İstek: 1) Hatanın olası nedenlerini kısa madde halinde açıkla. 2) Minimal bir düzeltme öner ve düzeltilmiş kodu ver. 3) Bu düzeltmeyi test etmek için bir örnek birim testi yaz.

Açıklama: Minimal bilgiyle önce kök nedeni belirtmesini, ardından sorunu hızlıca düzeltecek küçük bir yama sunmasını istiyoruz. Bu, acil durumlarda işe yarayan bir yaklaşımdır.

2. Hata sınıflandırma ve önceliklendirme (triage)

Bağlam: Proje: kullanıcı servisi, Dil: Node.js 18.
Durum: Belirli bir endpoint zaman zaman 500 dönüyor, ancak her istekte değil.
İstek: 1) Olası nedenleri (en muhtemelten daha az muhtemele) sırala. 2) Öncelikli kontrol adımlarını (3-5 adım) sırala. 3) Hızlı geçici çözümler (workarounds) öner.

Açıklama: Bu prompt, problemi analiz edip hangi logları, metric'leri veya testleri önce kontrol etmeniz gerektiğini söyler; triage sürecini hızlandırır.

3. Üç alternatif düzeltme ve trade-off değerlendirmesi

Kod ve sorun kısa özet: [kod ve hata buraya].
İstek: Üç farklı çözüm öner (1: minimal değişiklik, 2: orta ölçekli düzeltme, 3: büyük refactor). Her birinin avantajlarını, dezavantajlarını, tahmini risklerini ve hangi durumda tercih edileceğini açıkla.

Açıklama: Karar verirken seçenekleri ve riskleri karşılaştırmak için kullanın; bu, teknik borç ve zaman maliyeti analizlerine yardımcı olur.

4. Refactoring: daha okunur ve test edilebilir kod

Bağlam: Dil: Java, Hedef: Kod okunabilirliği ve test edilebilirliği artacak şekilde refactor.
Kod: [uzun fonksiyon örneği].
İstek: Kodun daha küçük fonksiyonlara bölünmüş, anlamlı isimlendirme ve bağımlılıkların azaltıldığı bir versiyonunu sun. Değişiklikleri adım adım açıkla ve her adıma karşılık gelen birim test örnekleri ver.

Açıklama: Refactor isteklerinde adım adım yaklaşım ve testleri birlikte istemek, regreasyon riskini azaltır.

5. Performans iyileştirme

Bağlam: Dil: Python, Mevcut: fonksiyon CPU-bound, giriş büyüklüğü ~10k.
Kod: [açıklayıcı kod örneği].
İstek: 1) Algoritmanın zaman karmaşıklığını tahmin et. 2) Daha hızlı alternatif bir yaklaşım öner ve bütünüyle düzeltilmiş kod ver. 3) Basit bir benchmark komutu örneği ver.

Açıklama: İyileştirme önerileri her zaman ölçümlerle desteklenmelidir; ChatGPT'den benchmark önerileri istemek iyi bir pratiktir.

6. Birim test üretimi

Bağlam: Dil: Ruby, Test çatısı: RSpec.
Kod: def calculate_total(items)
items.sum { |i| i.price * i.qty }
end
İstek: Bu fonksiyon için 5 farklı RSpec testi üret. Her testin amacı ve beklenen çıktısını açıkla.

7. Kod inceleme (code review) checklist'i uygula

Bağlam: PR açıklaması ve ilgili dosyalar eklendi.
İstek: Kodda güvenlik açıkları, performans sorunları, stil ve test eksiklikleri için 10 maddelik bir inceleme raporu hazırla. Örnek düzeltme satırları göster.

8. Versiyon ve dependency problemi tespiti

Bağlam: Proje: frontend app, Hata: belirli paket sürümü ile uyumsuzluk.
İstek: package.json bağımlılıkları göz önüne alındığında hangi paketler potansiyel uyumsuzluk yaratır, çözüm önerileri nelerdir (downgrade, upgrade, pinning, patches).

İterasyon: ChatGPT ile nasıl ilerlersiniz

  • 1. İlk prompt ile kısa bir düzeltme isteyin ve verilecek cevap formatını belirtin.
  • 2. Modelin önerdiği kod üzerinde lokal testleri çalıştırın.
  • 3. Başarısızsa, yeni hata mesajını ve çalıştırdığınız test komutlarını vererek tekrar istekte bulunun.
  • 4. Düzeltme başarılıysa, 'refactor for readability' ve 'add tests' gibi takip prompt'ları ile kodu stabil hâle getirin.
  • 5. Son aşamada bir code-review özet raporu isteyip PR açıklaması için kullanılacak kısa notlar alın.

Doğrulama ve güvenlik kontrol listesi

  • Unit/integration testleri çalıştırın ve yeni testler ekleyin.
  • Statik analiz araçlarını (linter, type checker) çalıştırın.
  • Güvenlikle ilgili değişikliklerde SAST/DAST taraması yapın.
  • Yapılan değişikliklerin performans etkisini benchmark ile ölçün.
  • Üçüncü parti kodlarda lisans uyumluluğunu kontrol edin.

Hızlı kontrol listesi

  • Hata mesajı ve minimal kod sağlandı mı?
  • Çalışma ortamı ve sürümler verildi mi?
  • Beklenen davranış açıklandı mı?
  • Gizli bilgi paylaşılmadı mı?
  • Önerilen değişiklik test edilebiliyor mu?

Sınırlamalar ve en iyi uygulamalar

ChatGPT, güçlü bir yardımcıdır ancak önerilen kodu çalıştırmadan veya test etmeden doğrudan projeye kabul etmeyin. Model bağlam eksikse yanlış veya eksik önerilerde bulunabilir; bu yüzden insan incelemesi, testler ve statik analiz şarttır. Güvenlikle ilgili değişikliklerde ayrıca güvenlik taramalarını ihmal etmeyin. Hazır prompt koleksiyonları iyi bir başlangıç noktası sağlar, ancak takım standartlarınıza göre uyarlamanız önemlidir (AI Prompt Library, GitHub).


Özet: Bu rehberdeki şablonlar ve adımlar, ChatGPT'yi hata ayıklama ve kod iyileştirme için pratik bir temele oturtur. Otomatik önerileri test edin, takım standartlarınıza uyarlayın ve değişiklikleri CI süreçlerinizde doğrulayın.