Code review'da nelere dikkat edersiniz? İyi bir pull request nasıl hazırlanır?
Cevap
Code review'un amacı yalnızca hata yakalamak değil; kod kalitesini, bilgi paylaşımını ve tutarlılığı sağlamaktır. İnceleyen kişi önce büyük resme (tasarım, doğruluk), sonra detaylara (isimlendirme, stil) bakmalıdır.
İncelerken öncelik sırası
- Doğruluk: kod gereksinimi karşılıyor mu? Kenar durumlar (null, boş liste, eşzamanlılık, hata yolları) düşünülmüş mü?
- Tasarım: sorumluluklar doğru yerde mi? Gereksiz karmaşıklık veya tekrar var mı?
- Güvenlik: girdi doğrulama, yetki kontrolü, SQL injection, log'a hassas veri yazılması.
- Performans: N+1 sorgu, döngü içinde ağ çağrısı, gereksiz bellek kullanımı.
- Testler: değişikliği gerçekten doğrulayan, okunabilir testler var mı?
- Okunabilirlik: isimlendirme, fonksiyon uzunluğu, gerekli yerde açıklayıcı yorum.
- Stil: bunlar mümkün olduğunca formatter ve linter'a bırakılmalı (Prettier, Black, ESLint, Checkstyle).
Yorum yazarken
- Kişiyi değil kodu eleştirin: "Bu fonksiyon iki işi yapıyor gibi" > "Yanlış yazmışsın".
- Nedenini açıklayın ve gerekirse alternatif önerin.
- Zorunlu olmayan önerileri
nit:veya "opsiyonel" diye işaretleyin. - İyi yapılmış kısımları da belirtin.
- Uzun bir tartışma başlıyorsa yazışmak yerine kısa bir görüşme yapın.
İyi bir PR hazırlamak
- Küçük tutun: genelde birkaç yüz satırın altında; büyük işleri ardışık PR'lara bölün. Büyük PR'lar yüzeysel incelenir.
- Açıklama yazın: ne değişti, neden değişti, nasıl test edildi, ekran görüntüsü veya log.
- Kendi PR'ınızı önce siz inceleyin: debug kodları, yorum satırına alınmış kodlar, ilgisiz format değişiklikleri.
- Refactoring ile davranış değişikliğini aynı PR'da karıştırmayın.
- CI'ın (test, lint, build) yeşil olduğundan emin olun.
Başlık: Sipariş listesinde N+1 sorgu sorununu gider
Neden: /orders endpoint'i 50 sipariş için 51 sorgu atıyordu (p95: 1.8 sn).
Ne: Order -> items ilişkisi için eager loading eklendi.
Test: Entegrasyon testi sorgu sayısını doğruluyor; lokal p95 210 ms.Ölçülebilir hedefler
Google'ın mühendislik pratiklerinde vurgulandığı gibi, review'lar hızlı olmalıdır (ideal olarak bir iş günü içinde ilk yanıt). Yavaş review, geliştiricileri büyük PR açmaya iter.
İlgili Yazılım Geliştirme Süreçleri soruları
- Testi olmayan büyük bir legacy kod tabanında değişiklik yapmanız gerekiyor. Nasıl ilerlersiniz?
- Semantic Versioning (SemVer) nedir? 2.4.1 sürümündeki her sayı neyi ifade eder?
- Teknik borç (technical debt) nedir? Ekipte teknik borcu nasıl yönetir ve iş tarafına nasıl anlatırsınız?
- CI/CD nedir? Continuous delivery ile continuous deployment arasındaki fark nedir? Tipik bir pipeline'da hangi adımlar olur?
- TDD (Test-Driven Development) nedir? Red-Green-Refactor döngüsünü bir örnekle anlatın.
- Test piramidi nedir? Unit, integration ve end-to-end testler arasındaki farklar nelerdir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.