İçeriğe geç →

Legacy Code Nedir?

Genellikle IT sektöründe işe giriş 3 aşamadan oluşur. IK ile görüşürsünüz. Olumlu ise size IT ekibinin daha önce hazırlamış olduğu bir case gönderir. Belirli bir süre içinde tamamlamanızı ister. Tamamlayıp gönderir ve IT ekibi ile üzerinde konuşursunuz. Başarılı ise tekrar IK ile görüşüp süreci sonlandırırsınız.

Benim bu caselerde dikkatimi çeken şartlardan bir tanesi test kodu yazılması. Şu ana kadar test yazılmasını isteyemeyen hiç bir firma görmedim. Görsem ve bunu benden istemeseler teknik ekip ile görüşürken bunu sorarım.

Bu görüşmelerde bol bol yazdığınız test caseleri ve code covarage üzerinde konuşulur.

Ardından işe başladığınızda projenin kodları size açılır ve o an gelir. Projede hiç test kodu yoktur.

Sebeplerini sorduğunuzda, projenin başka developerlardan miras kalması, business ekibi projenin bir an önce yayına çıkmasını gibi nedenler sunulur.

Peki sürekli duyduğumuz “Legacy Code” nedir? Tam olarak nasıl tanımlayabiliriz.

Legacy Code sadece eski kod mu? Yoksa başka birisinin kodu mu? Yoksa iyi olmayan kod mu?

“Working Effectively with Legacy Code” kitabında Michael Feathers bu tanımı açık bir şekilde tanımlıyor.

“Bana göre Legacy Code basitçe testsiz koddur.”

Micheal Feathers

Bu onun yılların deneyiminden elde ettiği deneyim.

Peki Feathers bunu neden söyledi? Çünkü testsiz kodun ne yaptığının anlaşılması zordur. Eğer projenin unit testleri olsaydı bu test kodları okunarak ne yaptığını anlaşılabilir. Tekrar tekrar çalıştırılarak kod çözülebilirdi.

Ayrıca bu yazının kaynağını oluşturan Nicalos Carlo’ nun legacy code blog yazısında eklediği iki madde daha var.

“Testli kodlarda Legacy Code olabilir” çünkü kötü yazılmış test kodu tam bir baş belasıdır. Test kodunu okuyarak kodun ne yaptığını anlamazsınız ve kodu refactor etmek zordur.

“Test kodu yok ama değiştirilmesi kolay” olabilir. Code base küçüktür anlaşılması ve değiştirilmesi kolaydır. Fakat unutmayın yeni özelliklerin ne zaman geleceği ve bu özelliklerinin aciliyet durumunu bilmiyorsunuz.

Bu blog yazısında bahsetmeyeceğim ama bu bahanelerde unit test yazmanıza engel değil.

Bence Legacy Code

  • Unit testi olmayan veya yetersiz olan
  • Unit testinden kodun ne yaptığı anlaşılmayan
  • Refactor etmesi zor ve refactor ederken korkulan
  • Yeni özellik eklemenin zor olduğu
  • Test odaklı yazılmayan
  • Teknik borç taşıyan
  • Zayıf dökümante edilmiş
  • Deploy edilmesi zor

kod olarak tanımlanabilir.

Bu yazı yazılırken aşağıdaki kaynaklar kullanıldı.

https://understandlegacycode.com/blog/what-is-legacy-code-is-it-code-without-tests/
https://stackoverflow.com/search?q=legacy+code
https://refactoring.guru/refactoring/technical-debt

Kategori: Genel

Yorumlar

Bir Cevap Yazın