Aikido

Kod tabanınızdan yorum satırlarıyla kapatılmış kodları neden kaldırmalısınız?

Okunabilirlik

Kural
Kaldır yorumlanmış kod blokları

Yorumlanmış kod yaratır gürültü yaratır, eski modası geçer, 
ve ait bu sürüm kontrol geçmişine değil kod kod tabanı değil.

Giriş

Geliştiriciler, eski mantığa ileride ihtiyaç duyup duymayacaklarından emin olmadıklarında, yorum satırına alınmış kodlar birikir. Birisi bir işlevi silmek yerine “ne olur ne olmaz” diye yorum satırına alır ve bu kod sonsuza kadar orada kalır. Bu kodun hâlâ çalışıp çalışmadığını, neden devre dışı bırakıldığını ya da kaldırılmasının güvenli olup olmadığını kimse bilmez. Kod tabanı, üretim ortamında gerçekte neyin çalıştığını anlamayı zorlaştıran geçmiş uygulamaların “hayaletleriyle” dolup taşar.

Neden önemli?

Kodun bakım kolaylığı: Yorum satırına alınmış kod, okuyucuları hangi kısımların aktif, hangilerinin ise atıl durumda olduğunu zihinsel olarak ayıklamaya zorlar. Kod incelemesi sırasında, bu blokların geçici denemeler mi, önemli geri alma seçenekleri mi yoksa yıllar öncesinden kalma unutulmuş kalıntılar mı olduğunu ayırt edemezsiniz. Bu gereksiz bilgiler, asıl mantığı anlamayı, ilgili kod bölümlerini bulmayı ve değişiklikleri anlamlı bir şekilde incelemeyi zorlaştırır.

Güvenlik açısından sonuçları: Yorum satırına alınmış kimlik doğrulama kontrolleri, geçerlilik mantığı veya güvenlik özellikleri, bu koruma önlemlerinin var olduğunu ancak kasıtlı olarak devre dışı bırakıldığını ortaya koyar. Yorum satırına alınmış kodda kimlik bilgileri, API anahtarları veya dahili URL’ler bulunuyorsa, bu hassas verileri düz metin olarak yayınlamış olursunuz. Kod tabanınızı inceleyen saldırganlar, hangi güvenlik önlemlerini değerlendirip kaldırdığınızı tam olarak görebilir.

Sürüm kontrolüyle ilgili kafa karışıklığı: Git fark raporları, aslında değişmeyen yorumlanmış bloklarla dolup taşıyor. Mantığın ne zaman değiştiğini veya bir özelliğin neden belirli bir şekilde çalıştığını izlemeniz gerektiğinde, yorumlanmış alternatifler gerçek geçmişi gizliyor. Kod tabanında arama yapıldığında, artık kullanılmayan kodlarda eşleşmeler bulunur ve bu da çalıştırılmayan yolları araştırarak zaman kaybına neden olur.

Kod örnekleri

❌ Uygun değil:

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 karma işlevi, şifrelerin düz metin olarak saklandığını ortaya koyuyor; bu da ciddi bir güvenlik açığıdır. Karşılama e-postası ve yönetici bildiriminin etkinleştirilmesi gerekip gerekmediği belli değil; ayrıca eski doğrulama kodu, e-posta doğrulamasının eksik olabileceğini düşündürüyor.

✅ Uygunluk:

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;
}

Bunun önemi: İşlev açık ve eksiksizdir; üretim ortamında tam olarak nelerin yürütüldüğünü gösterir. Önce e-posta doğrulaması yapılır, şifreler uygun şekilde karma hale getirilir ve hangi özelliklerin etkin olduğu konusunda herhangi bir belirsizlik olmaksızın tüm bildirimler gönderilir.

Sonuç

Kodu yorum satırı haline getirmek yerine silin. Sürüm kontrol sisteminiz, yazılmış her satırı saklar; bu satırlara şu yoldan erişilebilir: git log ve git blame ihtiyacınız olduğunda. Yorumlu kodları depoda tutmak, asıl mantığı gizleyen ve kod tabanınızda gezinmeyi zorlaştıran gereksiz bilgi yükü yaratır.

Sık Sorulan Sorular

Sorularınız mı var?

Ya geri alma işlemi için eski uygulamaya ihtiyacım olursa?

Yorumlar yerine özellik bayraklarını veya sürüm kontrol dallarını kullanın. Eski mantığa geri dönme ihtimaliniz varsa, bunu açıp kapatabileceğiniz bir özellik bayrağı arkasında uygulayın. Kalıcı değişiklikler için eski kodu silin ve Git geçmişine güvenin. Gerektiğinde silinen kodu her zaman `git log -p` veya `git show` komutlarıyla geri getirebilirsiniz.

Geliştirme aşamasında deneysel kodlarla nasıl başa çıkabilirim?

Deneylerinizi ayrı dallarda tutun ya da özellik bayrağı kullanın. İki farklı yaklaşımı test ediyorsanız, her biri için ayrı bir dal oluşturun ya da aralarında geçiş yapmak için bir yapılandırma bayrağı kullanın. Ana dallarda yorum satırına alınmış kodlar, üretim ortamında neyin bulunması gerektiğinden emin olmadığınızı gösterir; bu, sürüm kontrolüyle ilgili bir sorun değil, planlama sorunudur.

Hata ayıklama sırasında kodu geçici olarak devre dışı bırakmaya ne dersiniz?

Bu, yerel hata ayıklama oturumları için uygun olabilir, ancak bunu asla commit etmeyin. Commit yapmadan önce `git add -p` komutunu kullanarak yorumlanmış hata ayıklama kodlarını gözden geçirip hariç tutun. Ekip genelinde bir kodu geçici olarak devre dışı bırakmanız gerekiyorsa, yorumlar yerine özellik bayraklarını veya yapılandırmayı kullanın.

Yorum olarak eklenmiş açıklayıcı notları da silmeli miyim?

Hayır, bu kural, yorumlanmış kod bloklarını hedef almaktadır; dokümantasyon yorumlarını değil. Bir şeyin neden veya nasıl çalıştığını açıklayan açıklayıcı yorumlar değerlidir. Sorun, artık ilgili olabilecek ya da olmayabilecek, yorumlanmış çalıştırılabilir kod bloklarıdır.

Ya yorumlanmış kod, eski uygulama yöntemlerini belgeliyorsa?

Bu yaklaşımı, kullanılmayan kodları saklayarak değil, onu açıklayan bir yorumda belgelendirin. Her iki uygulamayı da yorum satırına alarak saklamak yerine, “önceden X yaklaşımı kullanılıyordu, Z nedeniyle Y’ye geçildi” şeklinde yazın. Tarihsel bağlam, kullanılmayan kod bloklarında değil, commit mesajlarında ve tasarım belgelerinde yer almalıdır.

Ş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.