Kural
Kalıntı TODO/FIXME yorumlarını kaldırın
Çözülmemiş TODO ve FIXME yorumları, zamanla
birikebilecek tamamlanmamış çalışmalara işaret eder. Bunları kodda
bırakmak yerine sorunları sorun takipçinizde (issue tracker) izleyin.
Desteklenen diller: 45+Giriş
TODO ve FIXME yorumları faydalı hatırlatıcılar olarak başlar ancak kısa sürede kod tabanının kalıcı demirbaşları haline gelir. Geçici bir not olarak düşünülen şey, herkesin görmezden geldiği bir uyarı işaretine dönüşür. Bu yorumlar; bitmemiş işleri, ertelenmiş kararları veya kimsenin düzgün bir şekilde takip etmediği bilinen sorunları gösterir. TODO yorumları içeren kodlar yayınladığınızda, ortada düzeltmek için herhangi bir plan olmaksızın bir şeylerin yanlış olduğunu kabul etmiş olursunuz.
Neden önemli?
Kodun sürdürülebilirliği: TODO yorumları, kodun kullanıma hazır olup olmadığı ve eksiksizliği konusunda belirsizlik yaratır. Yeni ekip üyeleri, bu yorumların acil sorunları mı yoksa kimsenin umursamadığı yıllar öncesine ait notları mı temsil ettiğini bilemez. TODO'lar biriktikçe kimse bunları ciddiye almaz ve kalite standartlarının zayıfladığı kırık pencereler (broken windows) etkisi yaratır.
Teknik borç takibi: Yorumların içine gizlenen sorunlara öncelik verilmez, bunlar atanmaz veya takip edilmez. Proje yönetim sisteminiz her şeyin tamamlandığını gösterirken kod tabanında düzinelerce "bunu daha sonra düzelt" notu bulunur. Düzgün bir takip yapılmadığında, önemli sorunlar üretim ortamında sorunlara yol açana kadar unutulur.
Güvenlik etkileri: TODO yorumları bazen eksik güvenlik uygulamalarını veya bilinen güvenlik açıklarını işaret eder. Prodüksiyon kodundaki "TODO: kimlik doğrulama kontrolü ekle" gibi bir yorum, tam bir bilinçle bir güvenlik açığı yayınladığınız anlamına gelir. Bu işaretler, kodunuzu inceleyen saldırganların zayıf noktaları bulmasını kolaylaştırır.
Kod örnekleri
❌ Kural dışı:
async function processPayment(userId, amount) {
// TODO: Add fraud detection before processing
// FIXME: This doesn't handle concurrent payments
const user = await db.users.findById(userId);
if (user.balance < amount) {
throw new Error('Insufficient funds');
}
// TODO: Add transaction logging
user.balance -= amount;
await user.save();
return { success: true };
}
Neden yanlış: Üç kritik sorun (dolandırıcılık tespiti, eşzamanlılık, günlük kaydı) işaretlenmiş ancak çözülmemiştir, bu da bu fonksiyonun eksik olarak yayınlandığını göstermektedir. Bu yorumlar, herhangi bir takip veya düzeltme takvimi olmaksızın bilinen sorunları belgelemektedir.
✅ Kurallara uygun:
async function processPayment(userId, amount) {
await fraudDetection.check(userId, amount);
return await db.transaction(async (trx) => {
const user = await trx.users
.findById(userId)
.forUpdate();
if (user.balance < amount) {
throw new Error('Insufficient funds');
}
user.balance -= amount;
await user.save();
await trx.auditLog.create({
userId,
action: 'payment',
amount,
timestamp: new Date()
});
return { success: true };
});
}
Neden önemli: Önceden işaretlenen tüm sorunlar çözülmüştür. Dolandırıcılık tespiti uygulanmış, veritabanı işlemleri eşzamanlılığı yönetmiş ve denetim günlüğü (audit logging) tüm ödemeleri takip etmektedir. Kod, nelerin eksik olduğuna dair özür niteliğinde yorumlar içermeksizin eksiksizdir.
Sonuç
Kodunuzu production'a merge etmeden önce TODO ve FIXME yorumlarını kaldırın. Çalışma tamamlanmadıysa bunu bitirin ya da proje yönetim sisteminizde uygun öncelik ve atamayla takip edilen issue'lar oluşturun. Kod içindeki yorumlar proje planlamasında görünmez ve kod tabanınızın sürekli olarak bitmemiş görünmesine yol açar.

