18 Şubat 2015 Çarşamba

Löp Et Refactor

Talep yaparken oynadığımız -talep bittiğinde zaten test edeceğimiz- kodlar üzerindeki iyileştirme fırsatlarını kaçırmayalım. Aşağıda 2 dakika süren bir iyileştirme örneği veriyorum.

 

İşaretli kısım aslında ben farklı bir metot olmalıyım diye resmen bağırıyor.  

Hesaplanacak bir değer var (ozetBeyanByte).   

Bu iş için (asıl metotta ihtiyaç duymadığımız) kaynaklar yaratılıyor. (AcenteMusteriAppCache).

 

Hesaplama yapan yeri seçiyoruz.

 

 

 

Saniyeler içinde metodu ayırdık. Artık ihtiyaç duyduğu kaynakları burada yaratıyor. İşi bittiğinde geri verecek.

 

 

 

Biraz da ince ayar yapalım. İç içe İF’lere ihtiyacımız yok. İşimiz bitince metodu hemen terk edebiliriz.

 

 

 

Sonuç: Artık hata ayıklarken eğer ilgileniyorsam f11 yapıp içine girerim, yoksa devam ederim vakit ve dikkat harcamam..

 

 

*metot ismini verirken küçük harfle başlamışım, affediniz.

 

Kolay gelsin.

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