Guard Clause ile Karmaşık Koşul Cümlelerini Anlaşılır Hale Getirmek

Umay Eras
3 min readSep 22, 2022

--

Guard Clauses C#

Merhabalar,

Bu yazımda sizlere geliştirdiğimiz karmaşık koşullu bir metodu; daha temiz, okunabilir bir görüntüye kavuşturmak için kullanmamız gereken basit refactoring yöntemi olan Guard Clause yönteminden bahsedeceğim.

Yazılan kodun karmaşıklığı, kodun ne işe yaradığını anlamayı zorlaştırır. İlk başta sadece bir if ile başlayan koşullar zaman içerisinde eklenen yeni özellikler ile beraber artarak kodun karmaşıklaşmasına, okunabilirliğinin kaybolmasına ve yeni bir özellik eklendiğinde de yönetimini zorlaştıracaktır.

Guard Clause yöntemi, iç içe geçmiş olan koşulları tek boyutlu hale getirip bir işlevden erken dönmeyi, if/else zincirlerini kullanmak yerine, koşul sağlandığında diğer koşulları kontrol etmeden işlevden çıkmayı sağlayan bir yöntemdir.

Bu yöntem temiz bir kod yapısı için en kolay yöntemlerden bir tanesidir diyebilirim. Hem okunabilirlik, hem yönetim, hem de daha performanslı geliştirme yapmamızı sağlayacaktır.

Örnek olarak ;

“X durumunu kontrol et. Eğer uygunsa Y durumunu kontrol et. O da tamamsa bunları bunları yap vs…” yerine

“X durumunu kontrol et uygun değilse işlemi sonlandır.”

Diğer durumları kontrol etmeye gerek duymadan ilk hatada ya da senaryoya uygun olmayan koşulda akışı sonlandırıyoruz.

Şimdi isterseniz ufak bir senaryo ile yazımızı örneklendirelim.

Senaryomuzda kullanıcı sistemimize kayıt olma işlemi gerçekleştirecek. Bunun için kullanıcıdan e-posta adresi ve bir şifre girmesini istiyoruz. Kullanıcı kayıt ol düğmesine bastığında alınan istediği kontrol edip kullanıcıyı sisteme kayıt edeceğiz.

Senaryo daha da genişletilebilir aslında örneğin işlemler sorunsuz bir şekilde gerçekleştirildiğinde kullanıcıya e-posta ile bildirim gönder, sms gönder ya da doğrulama kodu gönder vs…

Fakat şu an için bu kısımları örnek kod içerisine katmıyorum. Bunları ileri de gelecek olan yeni özellikler olarak değerlendirebiliriz. 😁

Kayıt işlemi sırasında kontrol etmemiz gereken 3 tane koşulumuz var.

  1. Kullanıcının girmiş olduğu e-posta adresi geçerli bir e-posta adresi mi?
  2. Kullanıcının girmiş olduğu şifre bilgisi belirlediğimiz standartlara uygun mu?
  3. Kullanıcı daha önce sisteme kayıt olmuş mu?

Bu koşulları değerlendirdikten sonra eğer kullanıcı sisteme kayıt edilmeye uygun ise kayıt edeceğiz, uygun değil ise neden uygun olmadığını kullanıcıya gösteren hata mesajı döneceğiz.

register without using guard clauses
register with using guard clauses

Örnek kodları senaryoya uygun şekilde oluştururken ilk kod parçasında Guard Clause yöntemi uygulamadan geliştirme yaptım. Daha sonra birinci örnek üzerinden Guard Clause yöntemini uygulayarak ikinci kod parçasını oluşturdum.

Sonuç olarak ikinci örneğimizin daha okunaklı ve kolay yönetilebilir olduğunu düşünüyorum. Açıkçası gerçek hayatta da bir kodu incelerken ya da refactor etmeye çalışırken metot içerisindeki iş kurallarının daha rahat anlaşıldığını ya da ilgili metodun birim testlerini yazarken bu yöntemin işi kolaylaştırdığı düşüncesindeyim.

Faydalı olması dileğiyle,

İyi çalışmalar…

--

--