Lava Flow (Dead Code) AntiPattern ve Kaçınma Yolları

Enes Aysan
2 min readApr 19, 2023

Merhaba arkadaşlar, anti-patternleri incelemeye devam ediyoruz. Bu yazımızda Lava Flow (Dead Code) anti-patterni incelemeye ve çözüm yolları sunmaya çalışacağız.

martin-sanchez-unsplash-lava
martin-sanchez-unsplash-lava

Lava Flow

Önceden yazılmış, yazılma amacı belli olmayan kodların (deneme, yanlış kullanım vs.) projede uzun süre taşınmasıdır. Bu kodlara genelde çalışan uygulamayı bozmamak korkusu ile dokunulmaz. Fakat bu kodları uzun süre taşımanın maliyeti daha fazla olabilir, bu kodlar ölü kod olarak tanımlanmıştır. Genelde koda bakıp “Bu kodu kim yazmıştı? Ne işe yarıyordu? dokümanı da yok bunun, ne yaptığı anlamadım şimdilik dokunmayalım, bir yeri bozmayalım” cümlelerini söylememize sebebiyet veren koddur.
Bu kodlar uzun süre projede taşınır ve kodun akışkanlığını azaltır, maliyetlerini arttırır.

sourcemaking-antipattern-lava
sourcemaking-antipattern-lava

Lava Flow Zararları Nelerdir?

  • Bu kodun anlaşılması genelde zor olduğu ve etkileri net olarak belirlenmediği için bu kod üzerine geliştirme yapmak maliyetlidir.
  • Giderek artan bu ölü kodlardan dolayı oluşan bu lav akışını analiz etmek, test etmek, geliştirmek çok daha maliyetlidir.
  • Culture-breaking broken window effect (mühendislik standartlarını düşürür)
  • Geliştirme yaparken clientları etkileyen beklenmeyen sonuçlara yol açabilir.
  • Lava Flow kodu, kaynakları kullanarak performansı azaltabilir.
tetiana-grypachevska-unsplash-lava

Lava Flow’dan Kaçınma Yolları

  • Analiz/tasarım dokümanı hazırlamak
  • Know-how u ekibe yaymak
  • Code review ve pair programming süreçleri ile özellikle geliştirme aşamasında kodların nasıl çalıştığını yazan kişiden farklı insanlarında bilmesini sağlamak.
  • Kodu belirli aralıklarla sürekli bir doğrulamadan geçirmek
  • Gelişen IDElerle ve toollar ile beraber geliştirilme sürecinde kullanılmayan kodların temizlenmesi ile code baseyi olabildiğince kullanılmayan koddan korumak.
  • Ürün içerisinde kullanılan kütüphane ve teknoloji seçimlerinde olabildiğince ortak akrar
  • Eğer servis yada api hizmeti sağlanıyorsa service contractları olabildiğince güncel ve iletişim içerisinde netleştirmek. Versiyonlama var ise versiyonları dokümante etmek.
  • Poc projeler yada denemek için hazırlanan kodlar direk development süreçlerine dahil edilmeyebilir.
  • Tek developer ((lone wolf)) süreçlerinden kaçınmak
  • Kaliteli test süreçleri uygulamak
  • Sürekli refactor süreçleri

Umarım faydalı olmuştur arkadaşlar. Herkesin Ramazan Bayramını kutlarım, kalın sağlıcakla …🙂

Kaynakça

https://sourcemaking.com/antipatterns/lava-flow
https://medium.com/architectural-patterns/lava-flow-programming-anti-pattern-nedir-3fa70cab7b9f
https://no-kill-switch.ghost.io/lava-flow-anti-pattern/

--

--