Fonksiyon içinde koşullu ifadeleri yukarı taşımak
- Bir fonksiyon içinde
if koşulu varsa, bunu çağırana (caller) taşımayı düşünün.
- Fonksiyonun önkoşulları içeride kontrol edip koşul sağlanmadığında 'hiçbir şey yapmaması' yerine, çağıranın önkoşulu kontrol etmesini sağlayarak önkoşulun sağlandığını tipler aracılığıyla garanti edin.
- Önkoşulları özellikle 'yukarı taşımak', genel olarak kontrol işini azaltabilir; bu da bu kuralın motivasyonlarından biridir.
Döngüleri aşağı taşımak
- Veri odaklı düşünceden çıkan bu kural, nesnenin 'batch' kavramını tanıtır; batch işlemlerini temel durum kabul eder ve skaler sürümü batch sürümünün özel bir durumu olarak ele alır.
- Başlıca faydası performans artışıdır; başlangıç maliyetini dağıtabilir ve işleme sırası konusunda esneklik sağlayabilir.
- Örneğin, FFT tabanlı polinom çarpımında, polinomları birden çok noktada aynı anda değerlendirmek tek tek değerlendirmekten daha hızlı olabilir.
GN⁺ görüşü
- Bu yazıdaki en önemli nokta, yazılım geliştirmede performansı ve kodun açıklığını artırmaya yönelik iki programlama kuralı olan 'koşulları yukarı taşımak' ve 'döngüleri aşağı taşımak'tır.
- Bu kurallar, kodun okunabilirliğini artırmaya, performansı optimize etmeye ve hata olasılığını azaltmaya yardımcı olur.
- Yazılım mühendisliğinin karmaşıklığını yönetmek ve verimli kod yazmak için içgörü sunduğundan, bu yazı birçok geliştirici için ilgi çekici ve faydalıdır.
1 yorum
Hacker News görüşleri
ifveforyerleşimi çok da dert edilmemeli deniyor.fordöngülerinin sırasını yanlış kurmak, bir simülasyonun çalışma süresini 1 haftadan 1 saate indirebilir. Bu geçmişe sahip biri,forveifsıralamasını içgüdüsel olarak optimize eder.ifkoşullarını yukarı taşımanın, fonksiyonun önkoşullarını ve sonkoşullarını doğrudan fonksiyon tanımında görünmez hale getirmesi gibi bir dezavantajı olduğu söyleniyor. Büyük projelerde bu tür fonksiyonlar amaçlanan bağlamın dışında yeniden kullanılabilir ve hatalara yol açabilir. Sözleşme çerçeveleri kullanmak bir çözüm olabilir, ancak bu durumda koşulları hem sözleşmede hem de kodda iki kez yazmak gerekir.ifkoşulları fonksiyonun altında değil üstünde olmalı ve hatalar düzgün şekilde yayılmalıdır.fordöngüleri veififadeleri de sonuçta kontrol akışı işlemleridir; bu yüzden yazıdaki bazı iddialar anlamsız görünüyor. Performansla ilgili iddia en güçlü olanı olsa da, genel bir tavsiye için bu ancak en son dikkate alınması gereken nokta deniyor.walrus'a bağlı olması nedeniyleifkoşullarını yukarı taşımak mümkün olmuyor.ifkontrollerini çağırana taşımak korkunç bir fikir olarak değerlendiriliyor. Özel durumlarda iyi bir fikir olabilir, ancak genel durumda istenmiyor. Kütüphanelerde önkoşulların dış sınırda kontrol edilmesi, iç uygulamanın iç varsayımlar olmadan ilerleyebilmesi için gerekli görülüyor. Kontrolü çağırana bırakmak bu amacın kendisini boşa çıkarıyor.