Takip et

FluentValidation Kural Kümeleriyle Gelişmiş Doğrulama

FluentValidation Kural Kümeleriyle Gelişmiş Doğrulama

Merhaba! Fatih Soysal olarak, bu yazıda sizlere FluentValidation kütüphanesinin güçlü bir özelliği olan “kural kümeleri”ni (Rule Sets) detaylı bir şekilde anlatacağım. FluentValidation, .NET uygulamalarında doğrulama işlemlerini kolaylaştıran popüler bir kütüphanedir. Ancak, karmaşık senaryolarda doğrulama kurallarının yönetimi zorlaşabilir. İşte tam bu noktada kural kümeleri devreye girer ve doğrulama sürecinizi organize etmenize, daha okunabilir ve sürdürülebilir bir kod yazmanıza yardımcı olur.

Öncelikle, kural kümelerinin ne olduğunu anlamak önemlidir. Basitçe söylemek gerekirse, kural kümeleri, bir doğrulama sınıfına ait kuralların gruplandırılmasıdır. Bu sayede, farklı senaryolarda farklı doğrulama kurallarını etkinleştirebilirsiniz. Örneğin, bir kullanıcı kaydı formunda, “kayıt” ve “güncelleme” adımlarında farklı kurallar uygulanabilir. “Kayıt” adımında şifre tekrarı zorunluyken, “güncelleme” adımında zorunlu olmayabilir. İşte bu tür senaryolarda kural kümeleri size büyük kolaylık sağlar.

Kural Kümeleri Nasıl Kullanılır?

FluentValidation’da kural kümeleri, RuleFor metoduna eklenen When ve Unless koşullarıyla birlikte kullanılır. Bununla birlikte, daha okunabilir ve organize bir kod için ayrı metodlar tanımlamak ve bu metodları birleştiren bir ana doğrulama metodunu kullanmak çok faydalıdır. Aşağıda basit bir örnek verilmiştir:


public class UserValidator : AbstractValidator<User>
{
    public const string KayitKuralKumesi = "Kayit";
    public const string GuncellemeKuralKumesi = "Guncelleme";

    public UserValidator()
    {
        RuleFor(x => x.Email).NotEmpty().WithMessage("Email adresi boş bırakılamaz").SetValidator(new EmailValidator()).When(x => x.IsNew).SetInheritanceBehavior(InheritanceBehavior.Ignore);
        RuleFor(x => x.Password).NotEmpty().MinimumLength(6).WithMessage("Şifre en az 6 karakter olmalıdır").When(x => x.IsNew);
        RuleFor(x => x.PasswordConfirm).NotEmpty().Equal(x => x.Password).WithMessage("Şifreler eşleşmiyor").When(x => x.IsNew);

        RuleFor(x => x.Name).NotEmpty().WithMessage("Ad boş bırakılamaz");
    }

    public void KayitKurallari(AbstractValidatorOptions options){
      RuleFor(x => x.Email).NotEmpty().WithMessage("Email adresi boş bırakılamaz").SetValidator(new EmailValidator()).When(x => x.IsNew).SetInheritanceBehavior(InheritanceBehavior.Ignore);
    }
}

Bu örnekte, KayitKuralKumesi ve GuncellemeKuralKumesi sabitleri tanımlanarak kural kümelerinin isimleri belirlenir. Daha sonra When koşulu kullanılarak farklı kurallar farklı senaryolara özgü olarak uygulanır. Örneğin, IsNew özelliği, kullanıcının yeni mi yoksa güncelleniyor mu olduğunu belirler. Bu sayede, IsNew true ise şifre tekrarı kuralı uygulanır.

Bu yaklaşım, kodun daha okunaklı ve sürdürülebilir olmasını sağlar. Ayrıca, büyük ve karmaşık doğrulama senaryolarında hata ayıklama ve bakım işlemlerini kolaylaştırır. Daha fazla bilgi için web sitemi ziyaret edebilirsiniz. Ayrıca, FluentValidation’ın resmi dökümanlarını inceleyebilirsiniz. Bu, FluentValidation’ı daha verimli kullanmanızda size yardımcı olacaktır.

Sonuç olarak, FluentValidation kural kümeleri, özellikle büyük ve karmaşık projelerde doğrulama işlemlerini yönetmek için oldukça güçlü bir araçtır. Kural kümelerini doğru kullanarak, daha temiz, okunaklı ve bakımı kolay bir kod yazabilir, projenizin sürdürülebilirliğini artırabilirsiniz. İyi kodlama pratiği olarak, her bir kural kümesi için ayrı bir metod kullanmak ve bu metodları ana doğrulama metodunda birleştirmek önerilir.

# Etiketler
FluentValidation, Kural Kümeleri, Doğrulama, Validation, .NET, C#, Örnekler, Rehber, Rule Sets, FluentValidation Kütüphanesi, Kod Örnekleri, Doğrulama Kuralları


Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version