İpucu - Early Return Pattern

  

Early Return Nedir?

Öncelikle aşağıdaki kodu bir inceleyelim. İç içe geçen ifler, birbirine bağlı koşullar kod okunurluğunu zorlaştırmakta. Ayrıca zamanla gelebilecek yeni eklemelerle içinden çıkılmaz, karmaşık bir hale gelebilir kodumuz.

public String returnResponse(ObjectA argument1, ObjectB argument2) {
	if (argument1.isValid()) {
		if (argument2.isValid()) {
			ObjectA otherVal1 = doSomeStuff(argument1, argument2)

			if (otherVal1.isValid()) {
				ObjectB otherVal2 = doAnotherStuff(otherVal1)

				if (otherVal2.isValid()) {
					return "Response";
				} else {
					throw new Exception();
				}
			} else {
				throw new Exception();
			}
		} else {
			throw new Exception();
		}
	} else {
		throw new Exception();
	}
}

 

Bunun yerine, cevap dönebildiğimiz yerlerde cevabı dönsek, daha okunur ve bakımı daha kolay bir kod yazmış oluruz.

Yukarı verdiğimiz örnek kodu şimdi "early return" prensibine göre düzenleyelim.

public string ReturnResponse(ObjectA argument1, ObjectB argument2)
{
    if (!argument1.IsValid())
    {
        throw new Exception();
    }

    if (!argument2.IsValid())
    {
        throw new Exception();
    }

    ObjectA otherVal1 = DoSomeStuff(argument1, argument2);
    if (!otherVal1.IsValid())
    {
        throw new Exception();
    }

    ObjectB otherVal2 = DoAnotherStuff(otherVal1);
    if (!otherVal2.IsValid())
    {
        throw new Exception();
    }

    return "Response";
}


Bu şekilde yukarıdan aşağı inildikçe anlaması daha kolay ve yeni eklemelere daha açık bir kod yazmış olduk. 

 

Early Return'ün Avantajları

  • Kodun Daha Anlaşılır Olması: Early return, kodun daha düzenli ve anlaşılır olmasına yardımcı olur. Koşullar, hemen dönüş yapıldığında daha az iç içe geçer.

  • Performans Artışı: Early return, gereksiz işlemlerin yapılmasını engelleyerek performansı artırır. Koşulun hemen sağlanması durumunda gereksiz hesaplamalar yapılmaz.

  • Hata Yakalama: Hataların erken yakalanmasına olanak tanır. Hata koşulları hemen tespit edilir ve işlem sonlandırılır.

 

Add comment