Aikido

Kod tabanınızdaki kalıntı TODO ve FIXME yorumlarını nasıl kaldırırsınız?

Sürdürülebilirlik

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.

Sık Sorulan Sorular

Sorularınız mı var?

Ya gerçekten bir şeyi sonradan ele almak üzere işaretlemem gerekirse?

Takip aracınızda (Jira, GitHub Issues, Linear) bağlam, öncelik ve atamayla birlikte bir issue oluşturun. Mutlaka yapacaksanız, yorum içinde issue numarasını bağlayın: // Planlanan refactoring için bkz. issue #1234. Bu, çalışmanın proje yönetiminde görünmesini sağlar ve uygun şekilde önceliklendirilmesini garanti eder.

Ya gerçekten bir şeyi sonradan ele almak üzere işaretlemem gerekirse?

Takip aracınızda (Jira, GitHub Issues, Linear) bağlam, öncelik ve atamayla birlikte bir issue oluşturun. Mutlaka yapacaksanız, yorum içinde issue numarasını bağlayın: // Planlanan refactoring için bkz. issue #1234. Bu, çalışmanın proje yönetiminde görünmesini sağlar ve uygun şekilde önceliklendirilmesini garanti eder.

TODO yorumlarının kabul edilebilir herhangi bir kullanımı var mı?

Henüz merge edilmemiş taslak pull request'lerde veya feature branch'lerde TODO yorumları, geliştirme sürecinde tamamlanmamış çalışmaları takip etmeye yardımcı olur. Main branch'e merge etmeden önce ya çalışmayı tamamlayın ya da TODO'ları takip edilen issue'lara dönüştürün. Asla production branch'lerine TODO yorumları merge etmeyin.

Legacy kodlardaki TODO'larla nasıl başa çıkmalıyım?

Bunları toplu halde denetleyin. Eski TODO'ların birçoğu güncelliğini yitirmiştir veya zaten düzeltilmiştir. Geçerli sorunlar için biletler (ticket) oluşturun ve yorumları kaldırın. Yeni kodların TODO ekleyemeyeceği bir politika belirleyin. Bu, mevcut teknik borç üzerinde çalışırken yeni birikimlerin önüne geçer.

HACK veya OPTIMIZE yorumları hakkında ne söylebilirsiniz?

Bunlar da TODO yorumlarıyla aynı sorunlardan muzdariptir. HACK, yazdığınızdan utandığınız ancak yine de release ettiğiniz kodu gösterir. OPTIMIZE ise performans konusunda erken endişe duyulduğunu gösterir. Ya kodu düzeltin ya da özür dileyen yorumlar olmadan olduğu gibi kabul edin. Gerçek performans gereksinimlerini kod yorumlarında değil, biletlerde dokümante edin.

Şimdi güvenliğinizi sağlayın

Kodunuzu, bulutunuzu ve çalışma zamanınızı tek bir merkezi sistemde güvenceye alın.
Güvenlik açıklarını otomatik olarak hızla bulun ve düzeltin.

Kredi kartı gerekmez | Tarama sonuçları 32 saniyede.