ANTI-PATTERNS

Blob Anti-Pattern Nedir?

Onur Dayıbaşı
Architectural Patterns
3 min readJul 11, 2021

--

Blob nasıl oluşur. Öncelikle en çok uğraştığım UI ve Desktop, Web uygulaması geliştirme kısmından örnek vererek konuyu anlatayım.

Uygulamalar genelde iterative olarak gelişir. İlk önce 2 bileşeni olan uygulama zaman içerisinde 4, 8, 16, 32 … olarak ilerlemeye başlar.

Not : Yazılım Geliştirme Modelleri yazısı içerisinde Iterative Geliştirme ile ilgili detaylara ulaşabilirsiniz.

Iterative Bir Ekranın Geliiştirilmesi

Bizim ilk yazdığımız kodda CompA ve CompB birbiri ile direk konuşmasını istemeyiz çünkü ilerleyen süreçte bu sayı artacağı için bileşenlerin birbirleri ile konuşma arayüzlerini ve bağlantılarını kontrol edemez hale geliriz.

Modüller Direk Birbiri ile Konuşması Durum

Bileşenlerin birbirleri ile olan iletişimi sırasında bu karmaşıklıktan kurtulmak için 2 örüntüden birisini tercih ederiz genelde.

Mediator Pattern , Observer Pattern göre daha kolay takip edilebilme ve kod okuması yapılsa bile Mediator Pattern tek bir sınıf üzerinde zaman içerisinde tüm bileşenlerin mantığını tutma ve yönetmeye dönüşürse yukarıda bahsettiğimiz Blob Pattern dönüşür. Aşağıdaki resimde uygulamamız 2 bileşenden 4 bileşene çıktığında, bu bileşenler arasındaki iş kurallarını ve akışlarını MainScreenManager belirliyor ise bu kodun ne kadar büyüdüğünü sizde göreceksiniz. Bileşen sayınız 50, 100 çıktığında artık kodunuz yönetilemeyecek hale gelir.

MainScreenManager Kodu Nasıl Karmaşıklaşır

Peki bu yöntemi neden tercih ediyoruz. Çünkü geliştirmesi çok basit. Tek bir sınıf veya modül içerisinde tüm bağımlılıkları görmek ve birbirine bağlamak çok 2,3 satır kod ile yapabileceğiniz işler. Ama bu yapı 500, 1000+ üzerinde satıra ulaştığında artık kodun bir yumağa dönüştüğünü sizde farkedeceksiniz.

Bu durum da Blob Anti-Pattern gerçekleştirmiş olursunuz. Bu aşamadan sonra tamamen yapısal değişiklikler Observer , Pub/Sub, Event Based yapılara geçmek oldukça zordur.

Yapılacak en mantıklı davranış MainScreenManager sınıfı mantıklı parçalara bölerek, delegation yöntemi ile SubManager yönetmeye çalışmaktır.

MainScreenManager parçalara ayırarak kod satır sayısı düşürülür

Bu sayede Blob objenin içerisinde ufak Blob objeler çıkarak ana Blob sınıf/modülünün kod satır sayısı düşürülür.

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--