Skip to content

Code Review, Refactor, and Optimization

Use Claude as a code reviewer: pattern detection, refactor suggestions, performance tuning, and security review.

Şükrü Yusuf KAYA
12 min read
Intermediate
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.

Frequently Asked Questions

Yes. On PR open, send the diff to Claude, parse JSON output in your pipeline, and fail CI on blocking issues. Common pattern with GitHub Actions.

Yorumlar & Soru-Cevap

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

Related Content