Legacy Kod Nedir?
İngilizce: Legacy Code
Yayın: · Son güncelleme:
Legacy Kod Nedir? Kısaca
Legacy kod (miras kod), hâlâ kullanılan ama eski teknolojilerle yazılmış, çoğu zaman belgesi ve testi eksik, yazanların artık ekipte olmadığı koddur. Şirketin işi için önemlidir ama değiştirmesi risklidir.

Legacy kod nedir?
Legacy, "miras" anlamına gelir. Legacy kod da size bırakılmış, sizin yazmadığınız ama sorumluluğunu taşıdığınız koddur. Bankacılık, sigorta ve kamu sistemlerinde onlarca yıllık kodun hâlâ çalıştığı sık görülür.
Eski olması tek başına kötü değildir. Yıllardır sorunsuz çalışan bir sistem, değerli iş kurallarını içinde saklar. Asıl zorluk, o kuralları kimsenin tam bilmemesidir.
Neden hâlâ kullanılır?
Çünkü çalışır ve işin merkezindedir. Değiştirmek pahalı ve risklidir. Bir bankanın hesap hareketlerini işleyen sistemi bir hafta bile aksarsa sonuçları ağır olur.
Bazı tanımlar daha keskindir. Michael Feathers'ın "Working Effectively with Legacy Code" kitabındaki yaygın tanıma göre legacy kod, testi olmayan koddur. Bu tanım işe yarar, çünkü sorunun özünü gösterir: test yoksa değişikliğin bir şeyi bozup bozmadığını bilemezsiniz.
Legacy kodda güvenle değişiklik yapmak
Önce anlayın, sonra dokunun. Kodu çalıştırıp davranışını gözlemleyin ve bulduklarınızı not edin.
Değiştireceğiniz bölüm için mevcut davranışı kaydeden testler yazın; bunlara "karakterizasyon testi" denir.
Örneğin yirmi yıllık bir prim hesaplama modülünü güncellemeniz gerekiyor. Önce farklı müşteri profilleri için mevcut sonuçları test olarak sabitlersiniz, sonra değişikliği yaparsınız. Beklenmedik bir sonuç değiştiyse testler bunu hemen gösterir.
Büyük yeniden yazımlar yerine eski sistemi parça parça yenisiyle değiştirmek genelde daha az risklidir. Bu süreçte biriken teknik borç da adım adım azalır.
Sıkça Sorulan Sorular
Legacy sistem ne demek?
Legacy sistem, eski teknolojilerle kurulmuş ama hâlâ işin önemli bir parçasını yürüten yazılım ya da donanım sistemidir. Değiştirilmesi zor ve pahalı olduğu için uzun süre kullanılmaya devam eder.
Legacy kodu yeniden yazmak mantıklı mı?
Bazen mantıklıdır ama çoğu zaman risklidir. Eski koddaki gizli iş kuralları kaybolabilir. Genelde eski sistemi bölüm bölüm yenisiyle değiştiren kademeli bir yaklaşım daha güvenli sonuç verir.