Veri doğrulamaları alıcı / ayarlayıcı veya başka bir yerde?

oy
9

Bunu yapmak için iyi bir fikirdir olup olmadığını merak ediyorum doğrulamaları halinde alıcılar ve ayarlayıcılar başka kodunda veya.

Bu gelince olmak şaşırtabilir optimizasyonlar ve hız kodu, sana Alıcı ve ayarlayıcıların içinde doğrulamaları yapmak gerektiğini düşünüyorum, ancak konum kodunda güncelleme dosyaları veya veritabanı. Yanlış mıyım?

Oluştur 05/08/2008 saat 20:51
kaynak kullanıcı
Diğer dillerde...                            


8 cevaplar

oy
13

onlar verileri doğrulamak çünkü, sınıflar genellikle kamu getters / belirleyiciler ile özel üyeleri içeren niçin reaons biri tam olarak budur.

Eğer 1 ile 100 arasında olabilir daha Numara varsa, kesinlikle bu doğrular setter şey koymak ve sonra belki kod tarafından yakalandı ediliyor bir istisna olacaktır. Nedeni basit: Eğer setter bunu yapmazsak, hatırlamak zorunda olduğu 1 adet yinelenen kod yol açar veya unutmanız zaman, geçersiz bir duruma yol açar bunu ayarlamak her zaman, sınırlama 100.

Performans olarak burada Knuth beraberim:

"Biz zamanın yaklaşık% 97 demek, küçük verimliliği hakkında unutmalıyız. Prematüre optimizasyon tüm kötülüklerin anasıdır"

Cevap 05/08/2008 saat 20:59
kaynak kullanıcı

oy
4

@Terrapin, yeniden:

Eğer gereken tek şey [basit genel set / get] özelliklerinin bir demet olursa ... bunların da alanlar olabilir

Özellikler alanlar üzerinde başka avantajları var. Onlar tefrika konum daha açık sözleşme konum, daha sonra debug edilebilir, bunlar miras yoluyla uzatılması için iyi bir yer konum. clunkier sözdizimi kazara karmaşıklığı - örneğin 3.5 bu üstesinden .net.

Yaygın bir (ve kusurlu) uygulama kamu alanları ile başlar ve bir 'gerektiği gibi' temelinde, daha sonra özelliklere bunları açmak etmektir. Bu sınıf tüketir herkesle sözleşme kırar, bu yüzden özelliklere sahip başlamak en iyisidir.

Cevap 08/08/2008 saat 01:07
kaynak kullanıcı

oy
3

Değişir.

Genellikle, bu kod hızlı başarısız gerekir. değer kodunda birden fazla nokta tarafından belirlenen ve değerini aldıktan sonra sadece doğrulamak edilebilirse, hata güncelleştirme yapar kodunda olduğu anlaşılıyor. belirleyiciler giriş doğrulamak, kod geçersiz değerleri ayarlamak için çalışıyor biliyorum.

Cevap 05/08/2008 saat 20:59
kaynak kullanıcı

oy
3

En sıçramalı kodu olan perspektifinden bakıldığında, sana bir özelliğinin setter olabildiğince sizin kadar doğrulama yapması gerektiğini düşünüyorum. Bu şekilde önbelleğe veya geçersiz veri ile ilgili edilmeyecektir.

Sonuçta bu özellikler yöneliktir budur. Eğer gereken tek şey gibi özelliklerin bir demet olursa ...

public string Name
{
    get
    {
        return _name;
    }
    set
    {
        _name = value;
    }
}

... onlar da alanlar olabilir

Cevap 05/08/2008 saat 20:59
kaynak kullanıcı

oy
1

belirleyiciler kesinlikle durumunu değiştirme herhangi yöntemlerin yanı sıra doğrulama olurdu bu yüzden, benim nesneleri geçersiz durumuna girmek asla izin deneyin. Bu şekilde, ben uğraşıyorum nesne geçersiz olduğunu derdiniz yok. Eğer doğrulama sınırları gibi yöntemlerinizi tutarsanız, o zaman her yerde serpilir doğrulama çerçeveler ve IsValid () yöntemi çağrıları konusunda endişelenmenize gerek asla.

Cevap 23/09/2008 saat 20:44
kaynak kullanıcı

oy
1

Ben uygulamak ister IDataErrorInfo ve Hata ve bu [columnName] özelliklerinde benim doğrulama mantığını koydu. Orada sadece kodunda bu özelliklerin birini test edebilirsiniz bir hata var ya da Web Formları, Windows Forms veya WPF bağlama verilere kapalı doğrulama el olup olmadığını programlı kontrol etmek istiyorsanız bu şekilde.

WPF'ın "ValidatesOnDataError" Bağlanma özelliği bu özellikle kolaylaştırır.

Cevap 07/08/2008 saat 23:24
kaynak kullanıcı

oy
1

Dışarı kontrol etmek istersin Domain Driven Design Eric Evans tarafından. DDD bir şartnamenin bu kavramı vardır:

... açık yüklem benzeri DEĞER ihtisas amaçlı OBJELER. Bir ŞARTNAME bir amacı, eğer tespit ya da bazı kriterleri yerine getiren bir yüklem.

Ben doğrulama için mantığı nerede tutacağınızı diğeri, hızlı başarısız bir şey olduğunu düşünüyorum. etki alanı mantığı tutmak için doğru yer ve ben bir Şartname Nesne veya Alan nesneler üzerinde doğrulayıcı bir yöntem iyi bir yer olacağını düşünüyorum.

Cevap 05/08/2008 saat 21:03
kaynak kullanıcı

oy
1

Doğrulama bir doğrulama yöntemi alıcılar ya da ayarlayıcılar ayrı ele alınmalıdır. doğrulama birden çok bileşenden yeniden kullanılabilecek gerekiyor Bu şekilde, eğer kullanılabilir.

ayarlayıcı çağrıldığında, bu tür bir doğrulama hizmeti nesnesine girdiyi kullanılması gerekmektedir. Bir nesneye depolanan tüm bilgilere Bu şekilde her zaman geçerlidir.

nesne üzerinde bilgiler zaten geçerli olması güvenilen, çünkü gaz giderici için doğrulama her türlü gerekmez.

Bir veritabanı güncellemesine kadar sizin doğrulama kaydetme !! Daha iyidir hızlı başarısız .

Cevap 05/08/2008 saat 20:55
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more