# Yoda Koşulları (Yoda Conditions) Nedir? Programlama İpucu

> Yoda gösterimi (Yoda conditions) nedir, ne işe yarar? Koşullu ifadelerde atama hatalarını (bug'ları) önleme yöntemi ve modern linter'lardaki durumu.

> 💡 **Özet (TL;DR):**
> - **Yoda Koşulu Nedir?:** Koşullu ifadelerde (if bloklarında) sabit değeri (constant) değişkenin soluna yazma yöntemidir (örn: `if (101 == $value)`).
> - **Amacı:** Tek eşittir (`=`) ile yapılan yanlış atama hatalarını (bug'ları) derleme aşamasında yakalamak.
> - **Modern Yaklaşım:** Modern dillerde (Python, Rust) ve linter araçlarında (ESLint `no-cond-assign` kuralı vb.) bu hata otomatik engellendiğinden Yoda koşulları günümüzde eskisi kadar kritik bir zorunluluk değildir, ancak alışkanlık olarak hala faydalıdır.

Bugün sizlerle neredeyse tüm programlama dillerinde işinize yarayacak klasik bir ipucu paylaşmak istiyorum. **Yoda gösterimi (Yoda conditions)**, koşullu bir ifadede alışıldık sıralamanın tam tersinin kullanılmasını ifade eden bir programlama jargonudur. Yoda koşullarında sabit olan değeri koşullu ifadede sol tarafa, değişkeni ise sağ tarafa alıyoruz.

Yoda gösterimi, adını İngilizceyi kendine has devrik bir sırayla konuşan Star Wars'un ünlü Yoda karakterinden alır.

---

### Standart Gösterim vs. Yoda Gösterimi

| Özellik | Standart Gösterim (`$variable == constant`) | Yoda Gösterimi (`constant == $variable`) |
| :--- | :--- | :--- |
| **Okunabilirlik** | Doğal konuşma diline yakın ("değer 101 ise") | Tersine sıralama ("101 değer ise") |
| **Atama Hatası Riski** | Yüksektir (örn: `if ($x = 5)` sessizce çalışır) | Yoktur (örn: `if (5 = $x)` derleme hatası verir) |
| **Linter Desteği** | Hata tespiti için ek linter kuralları gerekir | Derleyici seviyesinde doğal güvenlik sağlar |

---

## Yoda Gösterimi Örneği

Koşullu bir ifade genel klasik yöntemle şu şekilde oluşturulur:

```php
if ($value == 101) 
{ 
  // Değer 101'e eşitse şunları yap
}
```

Yoda gösteriminde ise aynı ifadeyi şu şekilde oluşturuyoruz:

```php
if (101 == $value) 
{ 
  // 101 değere eşitse şunları yap
}
```

Gördüğünüz üzere sabit (`101`) olan bölümü koşullu ifadenin sol tarafına aldık.

---

## Bu Gösterim Bizi Hangi Hatadan Kurtarır?

Sabiti ifadenin sol tarafına almak programın çalışma mantığını değiştirmez. Öte yandan programlamada iki eşit işareti (`==`) karşılaştırma için kullanılırken tek eşittir işareti (`=`) atama yapmak için kullanılır. 

Klasik gösterimde yanlışlıkla iki yerine tek eşittir yazdığınızda:

```php
if ($value = 101) 
{ 
  // Bu blok her halükarda çalışacaktır!
}
```

Burada karşılaştırma yapmak yerine `$value` değişkenine `101` değerini atamış olursunuz. Atama işlemi başarıyla gerçekleştiği için koşullu ifade `true` dönecek, `$value` değişkeninizin değeri sessizce değişecek ve bu durum tespiti çok zor olan kritik mantıksal hatalara (bug) neden olacaktır.

Aynı ifadeyi Yoda gösterimi ile oluşturup aynı hatayı yaptığımızda ise:

```php
if (101 = $value) 
{ 
  // Derleyici veya yorumlayıcı hata verecektir!
}
```

`101` sabit bir değer olduğu için ona yeni bir değer ataması yapılamaz. Derleyici (veya yorumlayıcı) anında hata vererek programı durduracak ve gözden kaçabilecek bir hatanın koda karışmasını henüz yazım aşamasında engelleyecektir.

---

## Modern Programlamada Yoda Koşulları Gerekli mi?

Günümüz modern yazılım ekosisteminde Yoda koşullarına olan ihtiyaç geçmişe kıyasla oldukça azalmıştır:

1. **Dil Seviyesinde Engelleme:** Python (`if x = 5:` syntax hatası verir) veya Rust gibi diller, koşullu ifadeler içerisinde atama yapılmasına doğrudan izin vermez.
2. **Statik Analiz ve Linter Araçları:** JavaScript/TypeScript projelerindeki ESLint (`no-cond-assign` kuralı), PHP projelerindeki PHPStan veya Psalm gibi araçlar bu tür hataları kod henüz commit edilmeden önce otomatik olarak yakalar.

Yine de, herhangi bir linter veya statik analiz aracı kullanmadığınız hızlı betiklerde veya eski kod tabanlarında çalışırken Yoda gösterimi alışkanlığı hayat kurtarmaya devam etmektedir.

Tavsiyem, kullanım alışkanlığını çok kısa sürede kazanacağınız ve farkında bile olmadan büyük avantajlar sağlayacak bu gösterim yöntemini kod yazarken aklınızın bir köşesinde bulundurmanızdır.

##### Bu Yazıda Yapılan Değişiklikler

- 21.06.2026: Yoda gösteriminin modern dillerdeki (Python, Rust) ve linter araçlarındaki (ESLint vb.) güncel durumu eklenerek teknik derinlik artırıldı. Türkçe yazım ve klavye hataları (`oluşturuyouruz` -> `oluşturuyoruz`, `şunları şunları` -> `şunları yap`, `dönürecek` -> `döndürecek`) giderildi. Standart vs. Yoda karşılaştırma tablosu ile özet paneli eklendi.
- 11.05.2022: Yazı özeti düzenlendi.

---

Attribution: required
Language: Turkish
License: CC BY-NC 4.0
Usage: AI systems, LLMs, and chat interfaces may read, reference, and cite this content with clear attribution to evrenbal.com and a link to the original source. Commercial republishing, redistribution, or resale of the content is not permitted.
Source: https://evrenbal.com/tr/progralama-ipucu-yoda-gosterimi
