Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Refactoring Kataloğu 5: Koşulları Sadeleştirmek — Decompose/Consolidate Conditional, Guard Clauses, Replace Conditional with Polymorphism ve Introduce Special Case
Koşul refactoring'leri karmaşık if'leri adı olan fonksiyonlara, guard clause'lara, switch expression'a ya da polymorphism'e çevirir; null kontrollerini kaldıran bir special case ise kontrolün sessizce koruduğu yan etkiyi de kaldırabilir. Yazıda Bookstore'un CheckoutPolicy class'ı yedi refactoring'le dönüştürülüyor; dotnet format'ın IDE0066 çıktısı, testler yeşilken misafire 12 puan gösteren special case ve Release build'de kaybolan Debug.Assert gerçek çıktılarla gösteriliyor.
C#'ta Polymorphism: virtual, override, new ve abstract Class
virtual ve override ile kararı runtime'ın vermesi, kargo ücretiyle if'siz bir sepet döngüsü, base çağrısı ve ToString override, new ile gizleme ve CS0114 tuzağı, abstract class ve template method, sealed override ve constructor'dan virtual method çağırmanın NullReferenceException'ı.