Kural
Yorum satırı haline getirilmiş kod bloklarını kaldırın
Yorum satırına çevrilmiş kod, kirlilik yaratır, güncelliğini yitirir
ve kod tabanında değil, versiyon kontrol geçmişinde yer almalıdır.Giriş
Yorum satırına çevrilmiş kodlar, geliştiricilerin ileride eski mantığa ihtiyaç duyup duymayacağından emin olamadığı durumlarda birikir. Birisi silmek yerine "ne olur ne olmaz" diye bir fonksiyonu yorum satırına alır ve o kod sonsuza dek orada kalır. Hiç kimse bu kodun hâlâ çalışıp çalışmadığını, neden devre dışı bırakıldığını veya kaldırmanın güvenli olup olmadığını bilmez. Kod tabanı, üretim ortamında (production) aslında neyin çalıştığını anlamayı zorlaştıran geçmiş uygulamaların hayaletleriyle dolup taşar.
Neden önemli?
Kod sürdürülebilirliği: Yorum satırına alınmış kodlar, okuyucuların gerçek olanla pasif duranı zihinsel olarak filtrelemesini zorunlu kılar. Kod incelemesi (code review) sırasında bu blokların geçici deneyler mi, önemli geri alma seçenekleri mi yoksa yıllar öncesinden kalma unutulmuş kalıntılar mı olduğunu anlayamazsınız. Bu kirlilik; asıl mantığı anlamayı, ilgili kod bölümlerini bulmayı ve değişiklikleri anlamlı bir şekilde incelemeyi zorlaştırır.
Güvenlik etkileri: Yorum satırına alınmış kimlik doğrulama kontrolleri, doğrulama (validation) mantığı veya güvenlik özellikleri, bu korumaların bir zamanlar var olduğunu ancak bilerek devre dışı bırakıldığını gösterir. Eğer yorum satırındaki kod kimlik bilgileri, API anahtarları veya dahili URL'ler içeriyorsa, bu hassas verileri düz metin (plaintext) olarak sızdırıyorsunuz demektir. Kod tabanınızı inceleyen saldırganlar, hangi güvenlik önlemlerini düşündüğünüzü ve hangilerini kaldırdığınızı net bir şekilde görür.
Versiyon kontrolü karmaşası: Git farkları (diff), aslında değişmeyen yorum satırı bloklarıyla dolup taşar. Mantığın ne zaman değiştiğini veya bir özelliğin neden belirli bir şekilde çalıştığını izlemeniz gerektiğinde, yorum satırına alınmış alternatifler gerçek geçmişi gizler. Kod tabanında arama yapmak ölü kodlarda eşleşmeler döndürür; bu da yürütülmeyen yolları araştırmaya çalışarak zaman kaybetmenize neden olur.
Kod örnekleri
❌ Kural dışı:
async function createUser(userData) {
// const hashedPassword = await bcrypt.hash(userData.password, 10);
const user = await db.users.create({
email: userData.email,
password: userData.password,
// password: hashedPassword,
role: userData.role || 'user'
});
// await sendWelcomeEmail(user.email);
// await notifyAdmins(user);
// Old validation approach
// if (!isValidEmail(user.email)) {
// throw new Error('Invalid email');
// }
return user;
}
Neden yanlış: Yorum satırına alınmış şifre hashleme işlemi, parolaların düz metin olarak saklandığını ortaya koyuyor ki bu kritik bir güvenlik açığıdır. Hoş geldin e-postasının ve yönetici bildiriminin etkinleştirilmesi gerekip gerekmediği bilinmiyor; ayrıca eski doğrulama mantığı, e-posta doğrulamasının eksik olabileceğini gösteriyor.
✅ Kurallara uygun:
async function createUser(userData) {
if (!isValidEmail(userData.email)) {
throw new Error('Invalid email');
}
const hashedPassword = await bcrypt.hash(userData.password, 10);
const user = await db.users.create({
email: userData.email,
password: hashedPassword,
role: userData.role || 'user'
});
await sendWelcomeEmail(user.email);
await notifyAdmins(user);
return user;
}
Neden önemli: Fonksiyon net ve eksiksizdir; üretim ortamında tam olarak neyin çalıştığını gösterir. E-posta doğrulaması önce çalışır, parolalar düzgün bir şekilde hashlenir ve neyin etkinleştirildiği konusunda hiçbir belirsizlik olmaksızın tüm bildirimler gönderilir.
Sonuç
Kodları yorum satırına almak yerine silin. Versiyon kontrol sisteminiz yazılmış her satırı korur ve bunlara şu komutla erişebilirsiniz: git log ve git blame İhtiyacınız olduğunda kullanabilirsiniz. Depoda yorum satırı haline getirilmiş kod tutmak yalnızca asıl mantığı gizleyen bir kirlilik yaratır ve kod tabanınızda gezinmeyi zorlaştırır.

