Aikido

Kendi kendine dokümante olan kodlar yazmak için neden açıklayıcı değişken adları kullanmalısınız

Okunabilirlik

Kural
Açıklayıcı değişken adları kullanın.
Çok kısa değişken adları kodu anlaşılmaz kılar.

Desteklenen diller: 45+

Giriş

Tek harfli veya şifreli değişken adları, okuyucuların kodu bir bakışta anlamak yerine bağlamdan anlam çıkarmaya zorlar. Şöyle bir değişken d tarihi, süreyi, mesafeyi veya veriyi temsil ediyor olabilir; bu da fonksiyon boyunca amacını takip etmek için zihinsel çaba gerektirir. Şunun gibi açıklayıcı adlar userCreatedDate veya requestDuration bilişsel yük oluşturmadan niyetin hemen anlaşılmasını sağlar.

Neden önemli?

Kodun sürdürülebilirliği: Net olmayan değişken adları kavrayışı yavaşlatır. Geliştiriciler gerçek mantığa odaklanmak yerine x, tmp veya val ifadelerinin neyi temsil ettiğini anlamaya çalışarak zaman harcar. Kötü adlandırma ayrıca kodu genişletmeyi zorlaştırır, çünkü yeni mantığın nereye sığması gerektiği veya mevcut değerlerin birbirleriyle nasıl ilişkili olduğu belirsizdir. Üstelik belirsiz adlar kod tabanını aranamaz hale getirir, çünkü tmp veya val araması anlamlı sonuçlar vermez. Bu durum, aylar sonra kodun başına dönüldüğünde veya yeni ekip üyeleri katıldığında katlanarak artar.

Hata oluşumu: Belirsiz adlar, yanlış değişkeni kullanma olasılığını artırır. Birden fazla değişken benzer şifreli adlara sahip olduğunda (d1, d2, d3), geliştiriciler yanlış olanı kullanabilir ve bu adlar hiçbir anlamsal ipucu barındırmadığı için kod incelemesinden (code review) geçen fark edilmez hatalara yol açabilir.

Kod örnekleri

❌ Kural dışı:

function calcAmt(u, qty) {
    const p = u.prc;
    const d = u.disc || 0;
    const t = p * qty;
    const a = t - (t * d);
    const tx = a * 0.08;
    return a + tx;
}

Neden yanıltıcı: Gibi değişken adları u, p, d, t, amaçları hakkında hiçbir şey söylemez. Okuyucuların p ifadesinin fiyat, d ifadesinin indirim, t ifadesinin ara toplam ve a ifadesinin vergiden önceki tutar olduğunu anlamak için hesaplama mantığını incelemesi gerekir.

✅ Kurallara uygun:

function calculateOrderAmount(product, quantity) {
    const price = product.price;
    const discount = product.discount || 0;
    const subtotal = price * quantity;
    const amountAfterDiscount = subtotal - (subtotal * discount);
    const tax = amountAfterDiscount * 0.08;
    return amountAfterDiscount + tax;
}

Neden önemli: Her değişken adı, ne içerdiğini açıkça açıklar. amountAfterDiscount hesaplama durumunu net bir şekilde belirtir, tax anlamı açıktır ve product ve quantity fonksiyon gövdesini okumaya gerek kalmadan girdilerini ortaya koyar.

Sonuç

Bağlama ihtiyaç duymadan niyeti belli eden isimler kullanın. Kısıtlılıktan ziyade netliği tercih edin. İfadesindeki totalPrice ile tp arasındaki fazladan karakterler çalışma zamanında maliyet yaratmaz ancak anlama süresinden önemli ölçüde tasarruf sağlar.

Sık Sorulan Sorular

Sorularınız mı var?

Tek harfli değişken adları hiçbir durumda kabul edilebilir mi?

Evet, sınırlı bağlamlarda. Döngü sayaçları (i, j, k) gelenekseldir ve anlaşılırdır. Fonksiyonel programlamadaki lambda fonksiyonu parametreleri (x => x * 2), işlemin bariz olduğu durumlarda kabul edilebilir. Matematiksel işlemler geleneksel isimler (koordinatlar için x, y) kullanabilir. Ancak bunlar küçük kapsamlarla (birkaç satır) sınırlandırılmalıdır.

Değişken isimleri ne kadar uzun olmalı?

Net olacak kadar uzun, pratik olacak kadar kısa. userData, u'dan da dataAboutTheCurrentUserBeingProcessed'dan da iyidir. 2-4 kelimeyi hedefleyin. Daha fazlasına ihtiyaç duyuyorsanız, değişken kendi tipini veya sınıfını hak eden bir kavramı temsil ediyor olabilir.

btn, msg veya ctx gibi kısaltmalar hakkında ne düşünüyorsunuz?

Alanınızdaki yaygın kısaltmalar kabul edilebilirdir. JavaScript'te context için ctx, request için req ve response için res yaygın olarak anlaşılır. Ancak yeni ekip üyeleri için açık olmayan projeye özel kısaltmalardan kaçının. Şüpheye düştüğünüzde açıkça yazın.

Eski kodu yeniden düzenlerken değişkenleri yeniden adlandırmalı mıyım?

Evet, ancak stratejik olarak. Başka nedenlerle bir fonksiyona dokunuyorsanız, değişikliğin bir parçası olarak değişken isimlerini iyileştirin. İsimler aktif bir karmaşaya veya hataya yol açmadığı sürece sırf yeniden adlandırmak için PR oluşturmayın. Tüm referansların doğru şekilde güncellendiğinden emin olmak için IDE yeniden düzenleme araçlarını kullanın.

Dil anahtar kelimeleriyle çakışmaları nasıl yönetirim?

Özgünlük katın: class yerine userClass, type yerine itemType. Veya bağlam kullanın: userCategory, productKind. Anlamını yitireceği için asla sayılar eklemeyin (class1, class2). Bu kısıtlama genellikle zaten daha spesifik bir isme ihtiyaç duyduğunuzu ortaya koyar.

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