İçeriğe geç

Kod İnceleme, Refactor ve Optimizasyon

Bir code reviewer olarak Claude'u nasıl kullanırsın: pattern bulma, refactor önerisi, performans tuning ve güvenlik review.

Şükrü Yusuf KAYA
12 dakikalık okuma
Orta
Code review akış: değişiklik → pattern → öneri

Claude — Kıdemli Reviewer

Claude'u sadece kod yazmak için değil incelemek için kullan. İyi review prompt'u şu üç katmandan oluşur:
  1. Bağlam: Bu PR ne yapıyor? Hangi sistemde?
  2. İlke: Hangi standartlara göre değerlendiriyor? (style guide, perf bütçe, güvenlik)
  3. Çıktı: Yapılandırılmış review (block / line yorumlu).
text
<role>Sen kıdemli bir Python + TypeScript reviewer'sın.</role>
 
<project_context>
Backend: FastAPI + Postgres
Frontend: Next.js 15 + TS strict
Testing: pytest, vitest
Style: ruff + black + eslint + prettier
Performans bütçesi: API p99 < 300ms
</project_context>
 
<review_rubric>
1. Doğruluk
2. Edge case kapsamı
3. Test coverage
4. Performans
5. Güvenlik (özellikle injection, authz)
6. Okunabilirlik
7. Convention uyumu
</review_rubric>
 
<output_format>
{
"summary": "...",
"blocking_issues": [{"file":"...","line":...,"severity":"high|med|low","comment":"..."}],
"non_blocking_suggestions": [...],
"praise": [...]
}
</output_format>
 
<diff>
{{git_diff}}
</diff>
Üretim seviyesi review prompt'u — JSON çıktıyı CI'da parse edersin.
python · diff modu
Senin kodun
Hedefe karşı diff
+ # Sonra — Claude'un önerdiği refactor:
+ def get_user(uid: str) -> dict | None:
+ """Fetch a user by id. Returns None if not found."""
+ with db.cursor() as cur:
+ cur.execute("SELECT * FROM users WHERE id = %s", (uid,))
+ row = cur.fetchone()
+ return dict(row) if row else None
- # Önce — issues:
- def get_user(uid):
- cur = db.cursor()
- cur.execute("SELECT * FROM users WHERE id = '" + uid + "'")
- return cur.fetchone()
SQL injection + bağlam yönetimi + tip imzası + docstring birlikte düzeltiliyor.

Hot path mikrobenchmark#

Claude'un önerdiği iki refactor seçeneğini karşılaştırmak için lokal mikrobenchmark.
python
import timeit
 
def opt1(data):
return [x * 2 for x in data if x > 0]
 
def opt2(data):
out = []
for x in data:
if x > 0:
out.append(x * 2)
return out
 
veri = list(range(1, 100_000))
print("opt1:", timeit.timeit(lambda: opt1(veri), number=200))
print("opt2:", timeit.timeit(lambda: opt2(veri), number=200))
Boşluk doldur · text
İyi bir review prompt'u üç katmandan oluşur: _____ , ilke ve çıktı formatı. Güvenlik review'ında _____ Top 10 lensini öner. Üretimde review çıktısını CI'da _____ olarak parse et.

Sık Sorulan Sorular

Evet. PR oluştuğunda diff'i Claude'a yolla, JSON çıktıyı pipeline'da parse et, blocking issue varsa CI'ı kırmızı işaretle. Çoğu ekip GitHub Actions ile yapar.

Yorumlar & Soru-Cevap

(0)
Yorum yazmak için giriş yap.
Yorumlar yükleniyor...

İlgili İçerikler