Kural
Şunu ödevleri ödevleri içine koşullu ifadelerin içine
Atamayı değer atama ve koşul mantığını birleştirilmesi kod hataya açık
ve zor anlaşılması anlaşması zor. Ayrı ödevler mantıksal kontrollerden kontrollerden
Desteklenen diller:** JavaScript, TypeScript, Python, PHPGiriş
Koşullu ifadeler içindeki atama operatörleri, derleyicilerin ve linterların sıklıkla gözden kaçırdığı yaygın bir hata kaynağıdır. Klasik hata, bir if ifadesinde == veya === (karşılaştırma) yerine = (atama) kullanmaktır, ancak sorun bundan daha derindir. Koşullu ifadelerde kasıtlı olarak yapılan atamalar bile okunması, incelenmesi ve hata ayıklanması zor kodlar oluşturur. Atama ve değerlendirme aynı satırda gerçekleştiğinde, okuyucular hangi işlemin öncelikli olduğunu ve aslında hangi değerin test edildiğini zihinsel olarak çözümlemelidir.
Neden önemli?
Neden önemli?
Hata açıklaması: Bir yazım hatasının düzeltilmesi === ...'ye = Bu, sözdizimi hatasına yol açmaz; sadece davranışta sessizce bir değişiklik yaratır. Koşul, karşılaştırma sonucunu değil, atanan değeri (doğru/yanlış) verir.
Kod okunabilirliği: Okuyucular, koşul ifadelerinin değerleri test etmesini bekler, değiştirmesini değil. Her ikisi de aynı anda gerçekleştiğinde, bakımdan sorumlu kişiler hangi değişkenlerin ne zaman değiştirildiğini takip etmek zorundadır.
Kod örnekleri
❌ Uygun değil:
function processUser(userData) {
if (user = userData.user) {
console.log(`Processing user: ${user.name}`);
return user.id;
}
return null;
}
function validateInput(value) {
if (result = value.match(/^\d{3}-\d{2}-\d{4}$/)) {
return result[0];
}
return false;
}
Neden yanlış: Koşullu ifadelerin içindeki atama işlemleri, bunun kasıtlı mı yoksa yazım hatası mı olduğunun anlaşılmasını zorlaştırıyor. İlk örnek, aslında === kullanılması gereken bir hata olabilir; ikincisinde ise düzenli ifade eşleştirme ile atama karıştırılmış, bu da kod akışının takip edilmesini zorlaştırıyor.
✅ Uygunluk:
function processUser(userData) {
const user = userData.user;
if (user) {
console.log(`Processing user: ${user.name}`);
return user.id;
}
return null;
}
function validateInput(value) {
const result = value.match(/^\d{3}-\d{2}-\d{4}$/);
if (result) {
return result[0];
}
return false;
}
Bunun önemi: Atamayı koşul cümlesinden ayırmak, niyeti son derece net hale getirir. Okuyucular hemen şunu anlar ki kullanıcı önce çıkarılır, ardından test edilir. Düzenli ifade eşleşme sonucu yakalanır, ardından değerlendirilir. Belirsizlik yok, bilişsel yük yok ve şu tür yazım hataları: = vs === ortaya çıkmak.
Sonuç
Atamaları koşul ifadelerinden ayrı tutmak, bir dizi hatayı önleyen basit bir kuraldır. Birleştirilmiş işlemleri ayrıştırmanın getirdiği zihinsel yük, algılanan kısalık avantajından daha ağır basar. Atama ve değerlendirmenin ayrı işlemler olduğu açık ve net kodlar, okunabilirliği artırır, hataları azaltır ve kod incelemesini daha etkili hale getirir.

