Aikido

Daha net bir kod için bir fonksiyonun amacını açıkça belirtmeniz neden önemlidir?

Okunabilirlik

Kural
Yap bir fonksiyonun amacı açık ve net
İşlev adları açıkça açıkça ifade ne ne işlev
ne ne okuyucuya okuyuculara incelemelerini incelemelerini uygulamayı uygulamayı

Desteklenen diller: 45+

Giriş

Amacını ortaya koymayan işlev adları, geliştiricileri davranışını anlamak için uygulamanın tamamını okumaya zorlar. Adı process() veya handle() herhangi bir işlevi yerine getirebilir; gerçek amacını anlamak için zihinsel çaba gerektirir. Şu gibi açık ve açıklayıcı isimler: validateUserEmail() veya calculateOrderTotal() Niyeti derhal açıkça belirtmek suretiyle kodun kendi kendini açıklamasını sağlamak.

Neden önemli?

Kodun bakım kolaylığı: Belirsiz fonksiyon adları, kodun anlaşılmasını zorlaştırır. Geliştiriciler, iş mantığına odaklanmak yerine fonksiyonların ne işe yaradığını anlamak için kodları okumakla zaman kaybederler. Bu durum, aylar sonra koda geri dönüldüğünde veya yeni ekip üyeleri katıldığında daha da belirgin hale gelir.

Yanlış kullanım: Belirsiz fonksiyon adları, yanlış kullanım olasılığını artırır. Adı update() doğrulama, dönüştürme, kalıcı hale getirme veya bildirim işlevleri görebilir; bu da, adın davranışı açıkça belirtmemesi nedeniyle geliştiricilerin onu yanlış kullanmasına yol açabilir. Anlaşılır adlar, kısıtlamaları ve yan etkileri belgelendirerek yanlış kullanımı önler.

Kod örnekleri

❌ Uygun değil:

function process(data) {
    const result = data.map(item => ({
        ...item,
        processed: true,
        timestamp: Date.now()
    }));
    db.save(result);
    notifyService.send(result);
    return result;
}

Neden yanlış: Adı process() Verilere ne olduğu konusunda hiçbir bilgi vermez. Okuyucular, fonksiyonun öğeleri dönüştürdüğünü, veritabanına kaydettiğini ve bildirimler gönderdiğini anlamak için kodun uygulamasını incelemek zorundadır. Fonksiyonun yan etkileri ve sorumlulukları gizlidir.

✅ Uygunluk:

function markItemsAsProcessedAndSave(data) {
    const processedItems = data.map(item => ({
        ...item,
        processed: true,
        timestamp: Date.now()
    }));
    db.save(processedItems);
    notifyService.send(processedItems);
    return processedItems;
}

Bunun önemi: Ad, işlevin öğeleri işlenmiş olarak işaretleyip kaydettiğini açıkça belirtir. Okuyucular, işlevin kodunu okumadan bile işlevin temel amacını hemen anlar. Ad, yan etkilere (veritabanına kaydetme) işaret ederek uygun beklentiler oluşturur.

Sonuç

İşlev adları, kod incelenmesine gerek kalmadan “bu ne işe yarar?” sorusuna yanıt vermelidir. Eylemleri tanımlayan fiiller ve hedefleri tanımlayan isimler kullanılmalıdır. Bir ad çok uzun hale gelirse, işlev muhtemelen çok fazla işlev görüyor demektir ve bölünmelidir.

Sık Sorulan Sorular

Sorularınız mı var?

İşlev adları en fazla ne kadar uzun olabilir?

Anlaşılır olması için ne kadar gerekiyorsa o kadar uzun olsun. calculateTotalPriceWithTaxAndShipping() işlevi, calc() işlevinden daha iyidir. Modern IDE’lerde otomatik tamamlama özelliği bulunur; bu sayede daha uzun isimleri yazmak kolaylaşır. Kısalık yerine anlaşılırlığı önceliklendirin. Bir isim 5-6 kelimeyi aşarsa, işlevin üstlendiği sorumluluklar fazla olabilir.

İşlev adları, uygulama ayrıntılarını içermeli mi?

Hayır, uygulamayı değil, davranışı ve amacı tanımlayın. İşlevleri nasıl çalıştıklarına göre değil, ne işe yaradıklarına göre adlandırın. sortUsersByName(), quickSortUsers()’tan daha iyidir. Uygulama ayrıntıları değişebilir, ancak amaç sabit kalır. Bu, yeniden yapılandırma sırasında isimlerin anlamlı kalmasını sağlar.

Peki ya yardımcı işlevler ya da yardımcı fonksiyonlar?

Yine de net isimler verilmelidir. helper() veya util() yerine, formatCurrency() veya validateEmail() gibi spesifik isimler kullanın. Aklınıza spesifik bir isim gelmiyorsa, fonksiyonun amacı belirsiz olabilir ve daha iyi tanımlanması gerekebilir.

Birden fazla işlevi yerine getiren fonksiyonlara nasıl isim vermeli?

Bunları ayırın. validateAndTransformAndSave() gibi isimlere ihtiyaç duyan işlevler, tek sorumluluk ilkesini ihlal eder. Ayrı işlevler oluşturun: validate(), transform(), save(). İşlemlerin birlikte gerçekleştirilmesi gerekiyorsa, iş akışını açıklayan bir isme sahip bir koordinatör işlevi kullanın: processUserRegistration().

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