İçeriğe geç
parazade

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?
İçindekiler
  1. Legacy kod nedir?
  2. Neden hâlâ kullanılır?
  3. Legacy kodda güvenle değişiklik yapmak

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.

İlgili terimler

Teknik Borç(Technical Debt)Teknik borç (technical debt), yazılımda hız kazanmak için seçilen kolay ya da geçici çözümlerin, ileride kodu değiştirmeyi zorlaştırarak ek iş ve maliyet doğurmasıdır. Tıpkı finansal borç gibi faizi vardır ve ödenmezse büyür.RefactoringRefactoring (yeniden düzenleme), yazılımın dışarıdan görünen davranışını değiştirmeden kodun iç yapısını daha okunur, sade ve bakımı kolay hâle getirmek için yapılan düzenlemelerdir. Yeni özellik eklemek ya da hata düzeltmek değildir.Spagetti Kod(Spaghetti Code)Spagetti kod, akışı tabaktaki spagetti gibi birbirine dolanmış, yapısı belirsiz, takip etmesi ve değiştirmesi çok zor koddur. Genelde plansız büyüyen, kopyala yapıştırla genişleyen ve kuralsız yazılan projelerde ortaya çıkar.Miras(Inheritance)Miras, ölen bir kişinin mal varlığının, haklarının ve borçlarının bir bütün olarak mirasçılarına geçmesidir. Türkiye'de miras hukuku Türk Medeni Kanunu ile düzenlenir; mirasçılar yasal mirasçılar ve atanmış mirasçılar olarak ikiye ayrılır.MySQLMySQL, verileri tablolarda saklayan ve SQL diliyle yönetilen açık kaynak kodlu bir ilişkisel veritabanı yönetim sistemidir. Web sitelerinde, özellikle WordPress gibi PHP tabanlı sistemlerde çok yaygın kullanılır.NoSQLNoSQL, verileri sabit tablolar yerine doküman, anahtar-değer, sütun ailesi ya da graf gibi esnek yapılarda saklayan veritabanlarının genel adıdır. Adı "Not only SQL" (yalnızca SQL değil) olarak yorumlanır.