# YAGNI (You Aren't Gonna Need It (Buna İhtiyacın Olmayacak))

Adres: https://softwaredictionary.org/tr/terimler/yagni
Kategori: Yazılım Mimarisi
Son güncelleme: 2026-09-30
Okunuşu: yegni

Kısaca: YAGNI, ileride gerekebilir diye değil, gerçekten ihtiyaç duyulana kadar bir özellik ya da soyutlama inşa etmemeyi söyleyen bir extreme programming ilkesidir.

## YAGNI nedir?

You aren't gonna need it ifadesinin kısaltması olan YAGNI, 1990'ların sonlarında geliştirilen çevik bir yöntem olan extreme programming'den (XP) gelen bir ilkedir. Bir şeyi yalnızca gerçekten ihtiyaç duyduğunuzda uygulamanız gerektiğini, ileride ihtiyaç duyabileceğinizi öngördüğünüzde değil, söyler. Geliştiriciler çoğunlukla gelecekteki gereksinimler için yapılandırma seçenekleri, eklenti sistemleri ya da genel soyutlamalar eklemeye özenir; YAGNI, bu tahminlerin çoğunun yanlış ya da gereksiz çıktığını savunur.

Bir özelliği erken inşa etmenin birkaç maliyeti vardır: şu anda gereken bir şey yerine ona harcanan zaman, herkesin okuması, test etmesi ve bakımını yapması gereken ek kod ve gerçek gereksinim sonunda geldiğinde ve tahminden farklı göründüğünde yapılan yeniden çalışma. YAGNI, otomatik testler, refactoring ve küçük, sık sürümler gibi sonraki değişikliği ucuz kılan uygulamalarla birlikte çalışır; bu yüzden özelliği gerektiğinde eklemek, onu baştan sona taşımaktan daha kolaydır.

Plaj gezisine hazırlanmak gibidir: her ihtimale karşı kar ayakkabıları, bir smokin ve bir çadır getirebilirsiniz, ama ağırlığı yol boyunca taşırsınız ve neredeyse kesinlikle hiç kullanmazsınız. Kodda YAGNI, yirmi hayali durumu ele alan bir framework yerine bugünün iki durumunu ele alan basit fonksiyonu yazmak demektir.

YAGNI sıklıkla KISS ilkesiyle karıştırılır. YAGNI bir şeyi hiç inşa edip etmeyeceğinize karar verir; KISS ise inşa etmeye karar verdiğinizde bunu en basit biçimde yapmakla ilgilidir. YAGNI ayrıca kaliteyi atlamak için bir bahane değildir: testler, anlaşılır kod ve refactoring her zaman gereklidir; public API sözleşmeleri, veri biçimleri ya da güvenlik gibi sonradan değiştirilmesi çok pahalı olan kararlar ise önceden biraz düşünmeyi hak eder.

## Önemli noktalar

- YAGNI, you aren't gonna need it ifadesinin kısaltmasıdır.
- Özellikleri ve soyutlamaları hayal edildiğinde değil, gerektiğinde inşa edin.
- Spekülatif kod şimdi zaman, sonra bakım maliyeti getirir ve çoğunlukla yanlış tahmin eder.
- Gelecekteki değişiklikleri ucuz tutmak için testlere ve refactoring'e dayanır.
- Özellikler için geçerlidir; test ya da güvenlik gibi kalite uygulamaları için değil.

## Örnek: Spekülatif tasarım ile bugün gerekeni karşılaştırmak

```typescript
// Speculative: plugins, options, and formats nobody has asked for yet
class ReportExporter {
  constructor(private plugins: ExportPlugin[] = [], private options: ExportOptions = {}) {}
  export(data: Row[], format: "csv" | "xml" | "pdf" | "xlsx" = "csv") { /* ... */ }
}

// YAGNI: the only current requirement is a CSV download
function exportCsv(rows: string[][]): string {
  return rows.map((row) => row.join(",")).join("\n");
}
```

## Sık sorulan sorular

**YAGNI neyin kısaltmasıdır?**

YAGNI, bazen you ain't gonna need it olarak da yazılan you aren't gonna need it ifadesinin kısaltmasıdır. Extreme programming'den gelir ve her ihtimale karşı özellik inşa etmeye karşı uyarır.

**YAGNI ile KISS arasındaki fark nedir?**

YAGNI kapsamla ilgilidir: ihtiyaç duyulana kadar bir şey inşa etmeyin. KISS tasarımla ilgilidir: ne inşa ederseniz edin, olabildiğince basit tutun.

**YAGNI ne zaman izlenmemeli?**

Bir karar sonradan geri almak için çok pahalı olacaksa, örneğin public bir API sözleşmesi, birçok sistemin paylaştığı bir veri modeli ya da güvenlik ve gizlilik gereksinimleri, ileriyi düşünün. YAGNI spekülatif özellikleri hedef alır, değiştirmesi zor temellerin dikkatli tasarımını değil.

---

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