Early Return / Erken Dönüş nedir?

Kimi kaynaklarda Early Return, kimi kaynaklarda Return Early ve hatta zaman zaman Early Return pattern olarak geçen bu kavram, yani erken dönüş kavramı nedir?


Early Return / Erken Dönüş nedir?

Kimi kaynaklarda Early Return, kimi kaynaklarda Return Early ve hatta zaman zaman Early Return pattern olarak geçen bu kavram, yani erken dönüş kavramı nedir? Aslında adı amacını belli ediyor; amaç bir fonksiyonda döndürülecek değerin mümkün olduğunca erken döndürülmesi. Peki bu bize ne sağlıyor ve neden kullanmalıyız? Aşağıdaki kod örnekleri ile anlatmaya çalışacağım; Örnekler PHP dili ile yazıldı fakat bu metot çoğu programlama dili için geçerlidir.

Koşullu ifade kontrolü yapan basit bir fonksiyon geleneksel olarak şöyle şekillendirilir;

public function enterSite($age)
{
    // 18 yaşından büyük mü?
    if ($age >= 18) {
        // Siteye girme izni var, gereken kodu çalıştır
    }
    else
    {
        return false;
    }
}

Bu fonksiyonda $age değişkeni 18’den büyükse IF blogunun içerisindeki işlemler gerçekleştiriliyor. Aynı kodu şöyle de yazabilirdik.

public function enterSite($age)
{
    if ($age < 18) { return } 

   // Siteye girmek için gereken kodu çalıştır.
}

Kodu bu şekilde çalıştırdığımızda işlev olarak hiç bir şey değişmez. Yaş 18’den küçükse fonksiyon hemen sonlandırılır, aksi takdirde geri kalanı çalıştırılmaya devam edilir. Ama bunun yanında girinti (indentation) seviyesi düşmüş olur, fazladan bir girinti daha yapmamıza gerek kalmaz ve kodu okumak daha da kolaylaşır.

Aslına bakarsanız IF/ELSE ifadesini tersten yazarak, ELSE bölümünü IF blogu haline getirmiş olduk.

Fonksiyonu biraz daha komplike bir hale getirdiğimizde bu yaklaşımın faydası daha net görülecek.
Yeni bir örnekle devam edelim ve kodumuzun şöyle olduğunu düşünelim.

public function canEnterSite($age, $paid)
{
    // $age değişkeni integer mı?
    if ( is_int($age) )
    {
       // $paid değişkeni booelan mı?
       if ( is_bool ($paid) {
          // 18 yaşından büyük mü?
          if ( $age >= 18 && $paid )
          {
             // Siteye girmek için gereken kodu çalıştır
             retur $true
          }
          else 
          {
             throw new exception("18 yaşından büyük ve ödeme yapmış olmalısınız");
          }
       }
       else 
       {
           throw new exception("Geçersiz ödeme bilgisi);
       }
    }
    else {
        throw new exception("Geçersiz yaş bilgisi);
    }
}

Şimdi bu kodu early return kuralımıza göre yeniden düzenleyelim. Dönüşleri mümkün olduğunca erken yapmaya çalışalım, bunu yaparkende ELSE’leri IF’e koyma ipucumuzdan faydalanalım.

public function canEnterSite($age, $paid)
{
    // $age değişkeni bir integer mı?
    if ( is_int($age) ) {
        throw new exception("Geçersiz yaş");
    }
    // $page değişkeni bir boolean mı?
    if ( is_bool($paid) ) {
        throw new exception("Geçersiz ödeme bilgisi);
    }
    if ( $age < 18 || ! $paid ) {
        throw new exception("18 yaşından büyük ve ödeme yapmış olmalısınız")
    }

    // Siteye girmek için gereken kodu çalıştır
    return true;
}

Gördüğünüz gibi bu kod bize şu avantajları sağlıyor

  • Girinti ( Indentation) seviyesi daha az, okuması ve anlaması daha kolay
  • Her şey yolunda gitmesi durumunda dönmesi gereken yanıt her zaman fonksiyonun en altında, if blokları içinde aramamıza gerek kalmıyor
  • Yeni bir hata durumu eklememiz gerekirse eklemek çok daha kolay, doğru yeri bulup yeni bir if/else bloğu açmamıza gerek yok

Kapak Fotoğrafı Negative Space from Pexels

Bir soru, öneri ya da yorumunuz mu var?

Evren Bal

Ben Evren BAL

1996'dan beri ‘Internet canlısıyım!’

Evren Bal Hakkında daha fazla bilgi.

Tanışmak isterseniz hemen sosyal medyadan iletişime geçebilirsiniz.

Bana Ulaşın

Bana Ulaşın

  • Bir sorunuz mu var?
  • Yazıda bir hata mı farkettiniz?
  • Sayfa ile ilgili bir öneriniz mi var?
  • Yazmamı önereceğiniz bir konu mu var?

Lütfen iletişim formunu kullanarak veya sosyal medya hesaplarımdan bana ulaşın.

Digital Ocean Logo

VPS sunucusu denemek ister misiniz?

Digital Ocean&apos;a referans bağlantımdan kayıt olarak yeni oluşturacağınız hesabınızı 60 gün geçerli 100$ kredi ile açabilirsiniz. Bu miktar yüksek performanslı VPS&apos;leri bile denemeniz için yeterlidir.

Yapacağınız onca kurulumun boşa gitmemesi için benim tavsiyem uzun vadede kullanabileceğiniz özellik ve maliyetlerde bir sunucu oluşturmanızdır.

Ücretsiz 100$ kredi bağlantısı

60 günlük denemeniz sonunda eğer devam etmek istemezseniz hiç bir ücret ödemeyeceksiniz. Hizmeti kullanmaya devam etmek isterseniz harcamanız 25$&apos;a ulaştığında benim hesabıma da 25$ kredi yüklenecektir.

Diğer bir deyişle, siz 100$ ücretsiz krediyi her halükarda kazanırken, daha sonra ücretli devam etmeye karar verirseniz ben de 25$ kredi kazanacağım.

Copyright © 2022 - Evren BAL