Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Clean Code Nedir? Okunabilirlik, Değişim Maliyeti ve 2025'teki İkinci Baskı
Clean Code, çalışan kodun ucuza değiştirilebilir ve okunabilir olmasıdır: Bookstore'un legacy OrderService'inde aynı sepet Türkçe I tuzağı, kopyalanıp ayrışmış fiyat hesabı ve DateTime.Now yüzünden dört farklı tutar üretiyor. 2025'te çıkan ikinci baskı kitabı Code, Design, Architecture ve Craftsmanship kısımlarıyla yeniden yazdı; seri bu 609 satırlık dosyayı adım adım temizleyecek.
Clean Code'da Class'lar: Küçük Class, Cohesion ve Değişime Göre Düzenlemek
Class'ın büyüklüğü satırla değil, değişikliğini isteyen actor sayısıyla ölçülür; method'ların field paylaşmaması ve CA1822'nin "static yap" uyarıları düşük cohesion'ın işaretidir. Legacy OrderService'te aynı class'taki iki fiyat hesabı ayrışıp 731,50 TRY teklif edip 690,52 TRY çekiyordu; fiyatı tek bir OrderPricing class'ına toplayıp primary constructor, sealed ve required ile modern C# class'ları kuruyoruz.
Code Smell Kataloğu: C# Kodunda Kokuyu Tanımak
Code smell, genellikle daha derin bir tasarım problemine işaret eden yüzeysel bir belirtidir; teşhis değil, bakılacak yeri gösterir. Yazı Fowler'ın 2. baskıdaki 24 smell'ini Mäntylä'nın beş grubuyla haritalıyor, her birini legacy OrderService.cs'te arıyor ve SonarAnalyzer'ın hangilerini yakalayıp hangilerini kaçırdığını gerçek çıktıyla gösteriyor.
Uygulamalı Clean Code: Legacy OrderService'i Adım Adım Temizlemek
Legacy kodu temizlemenin güvenli yolu önce küçük bir seam ve characterization test'lerle mevcut davranışı sabitlemek, sonra her adımı ayrı commit'te yapmak ve davranış değişikliklerini ayrı fix commit'lerine ayırmaktır. Yazıda 609 satırlık OrderService 16 commit'te, her commit'te testler yeşilken temizleniyor; en yüksek Cognitive Complexity 92'den 10'a iniyor, bilinçli bırakılan smell'ler de gerekçesiyle listeleniyor.