içeriğe atla

Katmanlı mimariye geçerken eski klasörü silmeyi unutmak

Bir projede Core/Application/Infrastructure katmanlarına geçiş yapılırken sık karşılaşılan, ama nadiren itiraf edilen bir hata örneğine rastladım: Animal, Business, Equipment, Appointment gibi domain nesneleri üç farklı yerde, birbirinden bağımsız class olarak tanımlanmış — eski Models/ klasöründe, yeni Core/Entities/ altında, bir de Core/Modules/ altında. Business.cs üç kopya, 41/44/42 satır, birbirinden habersiz.

Bu, katmanlı mimariye “geçiş yapılıyor” derken aslında ne olduğunu gösteriyor: yeni yapı eklenmiş, eski yapı silinmemiş. İkisi bir süre yan yana yaşıyor, hangi kod hangi tanımı kullanıyor belirsizleşiyor.

Geliştirme standartları dokümanında tarif edilen mimari zaten bu üçe ayrılmayı öngörmüyor — yani doküman ile kod arasında somut bir fark burada görülüyor.

Bunu neden önemsiyorum: “yeniden yapılandırma” genelde tek adımlık bir iş gibi anlatılır ama gerçekte iki adımlık — önce yeni yapıyı kurmak, sonra eskiyi silmek. Birinci adım heyecan verici, ikinci adım sıkıcı ve kolayca ertelenir. Ama ertelenen o ikinci adım olmadan, “hangi Business.cs gerçek?” sorusunun cevabı üç ay sonra kimse tarafından bilinmiyor olabilir. Bir geçişe başlarken bitiş kriterinin “yeni kod çalışıyor” değil “eski kod silindi” olması gerekiyor.