27 Haziran 2014 Cuma

Refactoring - Değer Atamalar

eskisi
       if (tumIbanlar.Count == 3)
        {
            faturaGenel.Iban1 = tumIbanlar[0];
            faturaGenel.Iban2 = tumIbanlar[1];
            faturaGenel.Iban3 = tumIbanlar[2];
        }
        else if (tumIbanlar.Count == 2)
        {
            faturaGenel.Iban1 = tumIbanlar[0];
            faturaGenel.Iban2 = tumIbanlar[1];
        }
        else if (tumIbanlar.Count == 1)
            faturaGenel.Iban1 = tumIbanlar[0];

yenisi
        if (tumIbanlar.Count > 0)
            faturaGenel.Iban1 = tumIbanlar[0];
        if (tumIbanlar.Count > 1)
            faturaGenel.Iban2 = tumIbanlar[1];
        if (tumIbanlar.Count > 2)
            faturaGenel.Iban3 = tumIbanlar[2];

Orijinal gönderi : Anıl Yetik

linq First() vs FirstOrDefault()

when SlotSahibiKumpanyaId is null

runtime exception
if(denizKonsimentosu.Rows.Count > 0)konsimentoListeleResponse.SlotSahibiKumpanyaId = 
denizKonsimentosu.AsEnumerable()
.Where(p => (p.Field<long?>("SlotSahibiKumpanyaId").ToLong() > 0)).                          Select(p => (p.Field<long?>("SlotSahibiKumpanyaId")).ToLong()).First();

Returns default value
if(denizKonsimentosu.Rows.Count > 0)konsimentoListeleResponse.SlotSahibiKumpanyaId = 
denizKonsimentosu.AsEnumerable()
.Where(p => (p.Field<long?>("SlotSahibiKumpanyaId").ToLong() > 0)).                        Select(p => (p.Field<long?>("SlotSahibiKumpanyaId")).ToLong()).FirstOrDefault();
 
Orijinal gönderi : Pınar Kılınç

25 Haziran 2014 Çarşamba

Temel LINQ Operasyonları - 2

Daha önce Temel LINQ Operasyonları konusunda bahsedilen örneklere ek olarak şu şekilde de bir senaryo ile karşı karşıya kalabiliriz. İki tane List<string> nesneleri içinde item bazında birbirlerini içerip içermediklerini kontrol etmek istediğimizde aşağıdaki gibi bir LINQ hayat kurtaracaktır.







Bu LINQ sorgusu KaynakList'in herhangi bir item'ın, HedefList'deki herhangi bir item'ın içinde geçip geçmediğini kontrol edecektir.

23 Haziran 2014 Pazartesi

refactoring source control changeset

Kod üzerinde yapmayı planladığımız değişiklikleri, mevcut bir taleple / değişiklik isteği ile birlikte değil, farklı bir çalışma (ve changeset ile) koda yansıtmamız, kodun değişimlerini gösteren tarihçe (history) kayıtlarını daha anlaşılır kılacaktır (Talep için yapılan değişiklikler ile kodu iyileştirme için yapılan değişiklikler ayrı ayrı takip edilebilecektir).

20 Haziran 2014 Cuma

Refactoring Uygulamaları - 3

TarifePeriyotDondur() SıraNumarasının sıfır verildiği senaryoyu desteklemektedir. Yani bu alana giriş yapılmış ise filtreye eklemektedir.

Burada sıra numarası ile giderek üç kez VT  sorgusu atmış oluyoruz.

Sıra numarası vermeden (üç periyod için tüm ) verileri bir seferde çekebiliriz sonra sonrasında tek satırlık LINQ sorgusu ile istediğimiz bilgiyi kullanabiliriz.

 

 

 

Refactoring Uygulamaları - 2

Tekrar eden kod blokları,

·      Farklı bir metot yazılmasını gerekliğini veya

·      “IF” bloklarının tekrar düzenlenmesini işaret eder.

Yazılan yeni metot


 

 

Refactoring Uygulamaları - 1

Tekrar Eden Operasyon

 

·      Aynı değişken için ikiden fazla “if” var ise, “switch..case” kullanmak daha okunaklı olacaktır.

·      Ara değişken kullanımı okunabilirliği artırır.

·      Erken validation ve terk