# Refactoring

Adres: https://softwaredictionary.org/tr/terimler/refactoring
Kategori: Yazılım Mimarisi
Son güncelleme: 2026-09-29
Türkçe karşılığı: yeniden düzenleme, kod iyileştirme
Okunuşu: rifektırıng

Kısaca: Refactoring, mevcut kodun dışarıdan görünen davranışını değiştirmeden daha temiz ve bakımı kolay hâle getirmek için yeniden yapılandırılması sürecidir.

## Refactoring nedir?

Refactoring, kodun dış davranışını aynen koruyarak iç tasarımını iyileştirmek demektir. Tipik örnekleri; anlaşılmaz değişkenleri yeniden adlandırmak, uzun bir fonksiyonu daha küçüklere bölmek, tekrarlanan kodu kaldırmak ve karmaşık koşulları sadeleştirmektir. Amaç, gelecekte okunması, test edilmesi ve değiştirilmesi daha kolay bir koddur.

Refactoring küçük ve güvenli adımlarla yapılır ve onu güvenli kılan şey otomatik testlerdir: hiçbir şeyin bozulmadığını doğrulamak için her değişiklikten önce ve sonra testleri çalıştırırsınız. Birçok kod editörü, sembolü yeniden adlandırma ya da fonksiyon çıkarma gibi, tüm referansları otomatik güncelleyen yerleşik refactoring araçları sunar.

İyi bir benzetme mutfağı yeniden düzenlemektir: eşyaları daha uygun yerlere taşır, çekmeceleri etiketlersiniz ama yine aynı yemekleri pişirirsiniz. Geliştiriciler çoğunlukla değişikliği kolaylaştırmak için bir özellik eklemeden hemen önce ya da temizlik için hemen sonra refactoring yapar. Refactoring, ekiplerin teknik borcu ödemesinin de başlıca yoludur.

Refactoring, baştan yazmaktan farklıdır. Baştan yazma mevcut kodu atıp yeniden inşa eder; bu yavaş ve risklidir. Refactoring ise kodu kademeli olarak değiştirir ve boyunca çalışır durumda tutar. Davranışı bilerek değiştirdikleri için hata düzeltmekten ya da özellik eklemekten de farklıdır.

## Önemli noktalar

- Refactoring kodun davranışını değil, yapısını değiştirir.
- Küçük adımlarla ilerleyin ve her adımdan sonra testleri çalıştırın.
- Yaygın refactoring işlemleri arasında yeniden adlandırma, fonksiyon çıkarma ve tekrarı kaldırma bulunur.
- Teknik borcu azaltmanın başlıca aracıdır.

## Örnek: Aynı fonksiyonun refactoring öncesi ve sonrası

```javascript
// Before: unclear names, magic numbers, and duplicated logic
function calc(o) {
  if (o.type === "vip") return o.total - o.total * 0.2;
  return o.total - o.total * 0.05;
}

// After: same behavior, clearer names, no duplication
const VIP_DISCOUNT = 0.2;
const REGULAR_DISCOUNT = 0.05;

function calculateFinalPrice(order) {
  const rate = order.type === "vip" ? VIP_DISCOUNT : REGULAR_DISCOUNT;
  return order.total - order.total * rate;
}
```

## Sık sorulan sorular

**Refactoring ile baştan yazma arasındaki fark nedir?**

Refactoring mevcut kodu, çalışır durumda tutarak küçük adımlarla iyileştirir; baştan yazma ise kodu yeni bir uygulamayla değiştirir. Yazılım çalışmaya devam ettiği ve her değişiklikten sonra test edilebildiği için refactoring genellikle daha düşük risklidir.

**Kod ne zaman refactor edilmeli?**

İyi zamanlar; değiştirilmesi zor bir koda özellik eklemeden hemen önce, bir özellik çalışır hâle geldikten hemen sonra ve kod incelemesi sırasıdır. Davranışın aynı kaldığını kolayca doğrulayamayacağınız için testsiz büyük refactoring'lerden kaçının.

**Refactoring işlevselliği değiştirir mi?**

Hayır. Tanım gereği refactoring dış davranışı aynı tutar; davranış değişiyorsa bu bir refactoring değil, hata düzeltmesi ya da yeni bir özelliktir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
