Kural
Fonksiyon argümanlarını ezmeyin (override etmeyin).
Fonksiyon parametrelerine yeniden değer atamak,
çağıranları şaşırtabilir ve hata ayıklamayı zorlaştırabilir.
Desteklenen diller: 45+Giriş
Fonksiyon parametrelerine yeniden değer atanması, fonksiyon içerisindeki argümanların değerini değiştirerek parametrenin herhangi bir andaki değerinin ne olduğunu belirsiz hale getirir. Hata ayıklama (debugging) sırasında, bir parametrenin çağıran tarafın aktardığı değeri koruduğuna güvenemezsiniz. Bu durum, kodu okuyan herkes için kafa karışıklığı yaratır ve parametrenin değeri yürütme boyunca değiştiği için hataların izini sürmeyi zorlaştırır.
Kod örnekleri
❌ Kural dışı:
function processUser(user) {
if (!user) {
user = { id: null, name: 'Guest' };
}
user = { ...user, processedAt: Date.now() };
if (user.age < 18) {
user = { ...user, restricted: true };
}
return user;
}Neden yanlış: The user parametresine birden fazla kez yeniden değer atanır, bu da tüm fonksiyonu okumadan orijinal çağrıcının ne ilettiğini bilmeyi imkansız hale getirir. Hata ayıklama, gerçek girdiyi değil değiştirilmiş değerleri gösterir, bu da sorunları kaynağına kadar takip etmeyi zorlaştırır.
✅ Kurallara uygun:
function processUser(user) {
const currentUser = user || { id: null, name: 'Guest' };
const processedUser = {
...currentUser,
processedAt: Date.now()
};
if (currentUser.age < 18) {
return { ...processedUser, restricted: true };
}
return processedUser;
}
Neden önemli: Yeni değişkenler (currentUser, processedUser) ara değerleri tutarken orijinal user parametre değişmeden kalır. Hata ayıklayıcılar gerçek girdi değerini gösterir ve kod, dönüşümleri adlandırılmış değişkenler aracılığıyla net bir şekilde takip eder.
Sonuç
Parametrelere yeniden değer atamak yerine dönüşümler için yeni değişkenler kullanın. Bu, veri akışını açık hale getirir ve hata ayıklama için orijinal girdiyi korur. Ek değişken bildirimlerinin hafif ayrıntı düzeyi (verbosity), artan okunabilirlik ve hata ayıklanabilirlik tarafından fazlasıyla dengelenir.

