Ahmet Oğuz Koca

Sosyal olaylar.

Linq aracılılığıyla basit bir DRY (don't repeat yourself) yöntemi

Programlama dünyasında aynı veya benzer amacı taşıyan kod bloklarının uygulamanızın farklı yerlerinde defalarca yer alması istenen bir durum değildir (don't repeat yourself). Özellikle çok katmanlı uygulamalarda bu problemden kaçınmak malesef oldukça zor olabilmekte. Bugün bir projenin kaynak kodları üzerinde araştırma yaparken programcının bu sorunun üstünden gelmek için güzel bir yöntem izlediğini gördüm ve sizlerle de paylaşmak istedim. Ben burada konuyu mümkün olduğu kadar basit tutmak amacıyla çok küçük bir örnek ile konuyu anlatmaya çalışacağım. 

Şekildeki gibi bir Member Class'imiz olsun

 

Öncelikle DB üzerinde işlem yaptığımız bir Reposiyory class'imiz olsun (örnekte MemberRepository) Class'imiz ile site üyelerimiz arasında isim ve email adreslerini kullanarak arama yapıyoruz.

İlk iki fonksiyonumuzda klasik yöntemle iki ayrı fonksiyon oluşturuyoruz. Bunlardan birincisi ile Nick üzerinden ikincisinde ise email adresi üzerinden ilgili kullanıcının veritabanımızda yer alıp yer almadığını kontrol ediyoruz. Üçüncü fonksiyonumuzda ise Linq expression'lar arayıcılığıyla daha esnek bir GetMember fonksiyonu oluşturuyoruz ve hangi parametre üzerinden arama yapılacağını sınıf örneğini oluşturan client kodumuza bırakıyoruz. Bu sınıf üzerinden işlem yapan istemci kodlarımız ise şöyle

Görüldüğü üzere linq expression ile oluşturduğumuz GetMember fonksiyonumuz sayesinde kod tekrarından kurtulmuş olduk ve uygulamamıza müthiş bir esneklik kattık. Nick ve EMail Adresinin yanında aynı fonksiyon sayesinde Member Class'imizin bir çok fieldi üzerinde arama işlemi yapabileceğimizi de unutmayalım. Ben burda sadece where fonksiyonu üzerinden örnek yaptım ancak tahmin edebileceğiniz üzere order sorgularından group'lama işlemelerine kadar bir çok yerde bu esnekliği siz de kullanabilirsiniz. Görüş ve önerilerinizi yorum olarak bırakabilirsiniz. Kolay kodlamalar...

Loading