Yazılım geliştirme, hızla değişen teknolojik peyzajda karmaşıklığı yönetme çabası içinde olan dinamik bir alanı temsil eder. Geliştiriciler, projelerini etkili ve sürdürülebilir hale getirmek için çeşitli stratejiler kullanırken, bazen aşırı mühendislik (over engineering) terimiyle karşılaşırız. Bu kavram, bir yazılım projesinde gerekli olmayan, işlevselliği aşan, karmaşık ve gereksiz özelliklerin eklenmesini ifade eder. Bu blog yazısında, over engineering'in ne olduğunu, nasıl ortaya çıktığını ve bu durumun yazılım geliştirme süreçleri üzerindeki etkilerini inceleyeceğiz....
Read More
NetArchTest kütüphanesi, .NET uygulamalarında mimari kuralları tanımlamak ve bu kuralların uygulanıp uygulanmadığını test etmek için kullanılan bir kütüphanedir. Bu tür bir kütüphane, büyük ölçekli projelerde tutarlı bir kod mimarisini korumak ve geliştiricilerin belirli kurallara uymasını sağlamak için oldukça kullanışlıdır. Örneğin sürekli olarak yeni birilerinin dahil olup geliştirme yaptığı bir projede bazı kuralların aşılmamasını engellemek istersiniz ve bunu denetlemeniz gerekir mesela projedeki namespace ler şu şekilde olmalı veya projedeki public method lar şu formata uymalı gibi....
Read More
Circuit Breaker, yazılım sistemlerindeki hata durumlarını ele almak için kullanılan bir tasarım desenidir. Bir servisin istenen hizmeti sağlamaması durumunda devreyi kapatır ve belirli bir süre boyunca tekrar denemeyi engeller. Bu, hataların yayılmasını ve uygulama performansının düşmesini önler....
Read More
Smart enum; içerisinde read-only property'ler bulunan bir class tanımlayarak kendi type-safe enumeration'larını yaratabileceğimizi belirtmekte. Bize sağladığı en iyi çözüm içerisinde enum'ın özelliklerini barındıran istediğimiz kadar property tanımlayabilmemiz ve böylelikle attribute-reflection vs kullanmadan daha basit bir kullanım söz konusu olmakta....
Read More
Windows servisler herhangi bir arayüzü olmadan işletim sisteminde background'da uzun süreli hiç durmaksızın çalışması gereken uygulamalar yaratmak için faydalanabileceğimiz yöntemlerden biridir. Windows servisler herhangi bir manuel start stop işlemi gerektirmeksizin üzerinde.....
Read More
Linq(Language Integrated Query), heralde .Net framework'e ait en önemli 4-5 özellikten birisidir desek kimsenin itirazı olmaz. .NET 3.5 ile hayatımıza giren linq temelde; senkron bir biçimde veri üzerinde çeşitli query'ler yazıp filtreler oluşturabildiğimiz çok zengin içeriği olan bir .Net teknolojisidir....
Read More
NULL Object Pattern Gang of Four’s Design Patterns kitabında anlatılmış olup behavioral design pattern'ler den biridir. Bu pattern'in amacı uygulama içeresinde null objeler return etmek yerine ilgili tipin yerine geçen ve expected value'nun null objesi olarak kabul...
Read More
Object relational mappers (ORMs); ilişkisel veritabanları ile programlama dillerinin nesne modelleri arasındaki uyumsuzluğu ortadan kaldırmak, kod ile database arasındaki uyumu %100 sağlamak için yazılım dünyasında uzun süredir kullanılmaktadırlar....
Read More
Design pattern'lar geliştirme yaparken tekrar eden problemlere denenip onaylanıp çözüm olarak sunulan kalıplardır. İyi bir tasarım deseni; yazmış olduğumuz kodları temiz, okunabilir kılıp sizden sonra gelecek olan kişilere daha kolay adapte olmayı sağlamalıdır....
Read More
Local Functions bizlere method scope'ları içerisinde function'lar tanımlamamızı sağlar ve o fonction'ı tıpkı o scope aralığında tanımlanmış bir değişken gibi kullanabiliriz....
Read More
Db de kayıtlı bulunan bir nesne için Update işlemi yaparken bazen öyle denk gelir ki sizden sadece ilgili objede değişen alanların gönderilmesi veya değişen alan var mı yok mu diye bir takım can sıkıcı validasyonlar yapmanız istenir ki hele bir de işin içine javascript...
Read More
Tuple custom bir class oluşturmadan üzerinde birden fazla specific değer tutabilen bir veri yapısıdır. Diğer bir değişle; geriye birden fazla parametre döndürmek istediğimiz bir metot var diyelim ve bu parametreler için normalde gidip custom bir nesne oluşturup sonra...
Read More
Daha önceki yazıda Windows üzerinde Redis kurulumunu anlatmıştık ve o yazımızda bahsettiğimiz gibi bu yazımızda StackExchange.Redis kullanarak bir .Net Client projesi geliştireceğiz. Öncelikle pc nizde Redis'in çalıştığından emin olun. Bunun için aşağıdaki gibi bir deneme yapabilirsiniz....
Read More
ORM (object relational mappers) uygulamalarınızda CRUD (Create, Read, Update, and Delete) işlemleri için basit bir şekilde data'ya erişimlerimizi sağlayan yapılardır. Çeşitli ORM framework'leri uzun zamandan beri data-model arasındaki veri alış verişini...
Read More
Primitive type'lar için sıralama işlemini bir şekilde list.Sort() vs gibi metotlar kullanarak yapabiliyoruz. Peki kendi yazdığımız objeler için bunu nasıl yaparız ? .Net tarafında iki objeyi belli field&property'lere göre sıralamamızı veya compare etmemizi sağlayan IComparable interface'i bulunmakta....
Read More