5 Eylül 2020 Cumartesi

Void Metodları Test Etmek

    S.A. Arkadaşlar,
      Bugün yine unit(birim) test ile ilgili bir yazı ile karşınızdayım. Unit testlerden öyle hemen vazgeçmek ya da önemsememek mümkün değil. Zira birim testler çok daha kararlı kod geliştirmemize olanak sağlar hatta bizi SOLID yapılara zorlayan bir yanı da vardır...  

       Daha önce birim testlerle ilgili bir yazı kaleme almıştık, fakat o yazıda daha çok veri kümelerini incelemiştik, bu defa ise void olan metodların nasıl test edileceği üzerinde duracağız. Bunun için bazı yöntemler olsa da malesef void metodları test etmek için sınırlı seçeneklerimiz bulunuyor. Bu yüzden mümkün mertebe kodunuzu düzgün dizayn etmeniz ve test edilebilir metodlar yazmak giderek önem kazanıyor.

22 Ağustos 2020 Cumartesi

Action Func Predicate

    S.A. Arkadaşlar,

    Bugünkü yazımızda Action<T>, Func<TParam,TReturn> ve Predicate<T,bool> yapıları üzerinde durmak istiyoruz. Nedir, neden ve nasıl kullanılır gibi soruların cevabını arayacağız. Aralarında ne gibi farklılıklar ve benzerlikler olduğunu söyleyip yazıyı bitirmeyi düşünüyoruz.

30 Temmuz 2020 Perşembe

in ve out ile Generic Inteface Kullanımı

S.A. Arkadaşlar,
    Bugün generic interface kullanımını ilgilendiren bir yazıyı ele alacağız. Bu yazının çıkış noktası ise önceki yazımızda ele aldığım sonarlint’in verdiği uyarıları çözmek ile ilgiliydi. Burada karşılaştığım bu uyarıyı araştırırken güzel bilgiler öğrendim ve bunları bir yazıda toplamaya karar verdim. 

21 Haziran 2020 Pazar

Sonarlint ile Refactoring

      S.A. Arkadaşlar,
      Bugünkü yazımız statik kod analizi yapan sonarqube alt yapısına bağlanan ve benzer kuralları işleten bir araç olan SonarLint'i inceleyeceğiz. SonarLint microsoft visual studio üzerine kurulan bir extention olup bunu rahatlıkla microsoft visual studio içinde kurabilir veya buradan da indirip kurabilirsiniz. Resmi sitesinde C# ile ilgili yaklaşık 390 kural görünmektedir, fakat biz sadece kendi karşılaştıklarımızı ele alacağız. Bunların bazılarını çözmek biraz daha kolay iken bazılarını çözmek ise biraz vakit alabiliyor. Tüm kurallar için ise buraya göz gezdirebilirsiniz. Karşılaştığım kuralları hangi kritere göre sıralamak konusunda çok düşündüm. En sonunda hata kodlarını küçükten büyüğe sıralamaya karar verdim. Bu yazıyı güncelle tutmaya özen gösterip karşılaştığımız hataları eklemeye devam edeceğiz.

23 Mayıs 2020 Cumartesi

C# 9.0 ile Gelen Yenilikler


    S.A. Arkadaşlar,
    Bugün C#'in en son yayımlanan sürümü olan 9.0 sürümünü ele alacağız. Yapılan yenilikler nelerdir, neler değişmiş onları anlatmaya çalışacağız. Daha önceki sürümlerde olduğu gibi Microsoft yine çok güzel özellikler geliştirmiş, fakat bu sefer veri şekillerini kısaltmak(okunurluk) ve veri şekillerinin değişmezliğine(performans) odaklanmışlar. Bunun yanı sıra fonksiyonel programlamayı anımsatan değişiklikler de var. Tüm bunları elimizden geldiğince incelemeye çalıştık.

18 Mayıs 2020 Pazartesi

Integration Test - (.Net Core - xUnit - Web Application Factory)

     S.A. Arkadaşlar,
     Bugün entegrasyon(integration) test konusuna odaklanacağız. Entegrasyon test, birim (unit) testten farklı olarak her bir metodu test etmekten ziyade metodların birbiriyle entegre çalışıp çalışmadığını kontrol eder. Örneğin, birim test yazarken bazı mock'lama objeleri kullanırız. Veri tabanını mock'layıp oradan doğru sonuç dönmüş gibi yaparız, ama entegrasyon test ile "mış" gibi yaptığımız şeyleri gerçekten yapıyoruz. Bunun için de alt yapımızı ayağa kaldırmamız gerekecek. Bunu nasıl mı yapacağız. Buyurun

23 Nisan 2020 Perşembe

Type-Safe Configuration (IOptions - IOptionsMonitor - .Net Core)

      S.A. Arkadaşlar,
      Bugün .NET Core ile uğraşanların genelde bildiği ve kullandığı bir konuyu ele alacağız. Bu konu her ne kadar bilinse de, birlikte bir miktar daha ileriye taşımaya çalışalım.
Bazı değişken bilgilerini genellikle .config dosyası içinde tutmaktayız. Bu dosyayı çoğu zaman development ortamı için ayrı, test ortamında ayrı ve production ortamlarında ayrı tutmaktayız. Tabi ki bu örnekler çoğaltılabilir. Asıl aktarmak isteğim mevzu, config değerleri string olarak tutulduğundan dolayı hataya açık bir durum oluşmaktadır zaman zaman. Gelin hep birlikte bunu type-safe bir yapıya taşıyalım.