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
OrtaClaude — Kıdemli Reviewer
Claude'u sadece kod yazmak için değil incelemek için kullan. İyi review prompt'u şu üç katmandan oluşur:
- Bağlam: Bu PR ne yapıyor? Hangi sistemde?
- İlke: Hangi standartlara göre değerlendiriyor? (style guide, perf bütçe, güvenlik)
- Çı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 + PostgresFrontend: Next.js 15 + TS strictTesting: pytest, vitestStyle: ruff + black + eslint + prettierPerformans bütçesi: API p99 < 300ms</project_context> <review_rubric>1. Doğruluk2. Edge case kapsamı3. Test coverage4. Performans5. Güvenlik (özellikle injection, authz)6. Okunabilirlik7. 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...