Bu haftaki konumuz projemizin depencylerini interaktif bir şekilde görselleştirerek sınıflarımızın birbirleriyle olan bağlantılarını görsel bir şölene dönüştürüyoruz !

Faydası: projemiz büyüdükçe sınıflarda çoğalacak ve bir birlerine olan bağlılıklarıda istemesekte artacak, bir başka deyişle sınıf ormanında kaybolmadan ilerleyebilmemiz için bir harita gerekiyor işte o harita bu konuda anlatılıyor.

Öncelikle nasıl çalıştığından bahsetmeliyim, projemizdeki birbirlerine bağımlılığı olan yada olmayan sınıflarımızı görselleştirebilmemiz için bir ruby scripti kullanacağız. Bu scripti proje klasörümüz içinde terminal aracılığıyla yürütmemiz gerekiyor, işlem tamamlandığında bulunduğumuz klasör içinde bir klasör oluşturulmuş olacak ve bu klasörün içinde görselleştirme işleminin bitmiş hali kullanıma hazır olmuş olacak, hadi başlayalım.

Görselleştirme işlemi Objective-C ve Swift projelerini desteklemektedir.

Proje klasörünüz içerisine Ruby scriptini indirme işlemi

ilk yapmamız gereken scripti github reposundan proje klasörümüzün içine kopyalamak olacak.

git clone https://github.com/PaulTaykalo/objc-dependency-visualizer.git

İndirilen ruby script klasöründe

şimdi sırada proje klasörümüze indirilip oluşturulan script dosyasının içerisine terminalle giriş yapalım ve aşağıdaki kodu klasörün içindeyken çalıştıralım

Swift projeniz için:
./generate-objc-dependencies-to-json.rb -w -s "projenizin adı" > origin.js
Objective-C projeniz için:
./generate-objc-dependencies-to-json.rb -d -s "projenizin adı" > origin.js

Projenizin adını yalın yazın uzantısını eklemenize gerek yok.

Şimdi tarayıcımızda görselleştirilmiş sınıflarımızı görebiliriz. terminalde aşağıdaki komutu çalıştıralım

open index.html

depency-visualizer

buradaki görselleştirme CoreCharts kütüphanesinden yapılmıştır.

Avantajları

  • Kolay kurulum.
  • Görselleştirme çıktısı olarak klasörü kolaylıkla platform bağımsız kullanabilir ve paylaşabiliriz.
  • Extra bir kütüphaneye ihtiyacımız yok.
  • İnteraktif ve görsel açıdan zengin bir arayüz.

Dezavantajları

Projeniz devasa boyuttaysa Google Chrome tarayıcınız yerine Safaride çalıştırmanızı tavsiye ederim çünkü chrome’da takılma oluyor, diğer tarayıcılarda henüz bir kullanım yapmadım.

Faydaları

projenizin o anki durumu hakkında arkadaşlarınızla yada projedeki takımınızla görseller üzerinden kolaylıkla beyin fırtınası yapabilirsiniz, mimarisi üzerinde konuşabilirsiniz. Bunlar dışında önünüze mimarisine aşina olmadığınız yada bilmediğiniz bir proje geldiğinde scripti çalıştırıp görseller üzerinden müdahale edeceğiniz sınıf diğer hangi sınıflara etki ediyor kuş bakışı görebilirsiniz.

Görselleştirmenin nasıl gerçekleştirildiği hakkında detaylı bilgi öğrenmek isterseniz projenin aşağıdaki github linkini ziyaret edebilirsiniz.

Objective-C and Swift dependency visualizer

Haftalık gönderilerden haberdar olabilmek için beni twitter adresimden takip edebilirsiniz.