IOS Yazılımlarda VIPER Mimarisi

IOS Yazılımlarda VIPER Mimarisi

IOS uygulamaları geliştirilirken en çok kullanılan mimari Apple’ın da önderdiği MVC mimarisidir. Ancak proje gelişimi ilerledikçe ViewController’ın aşırı şişmesi gibi optimizasyon problemlerine neden olmaktadır. Bu nedenle bu makalede MVVM, VIPER ve Clean Swift mimarileri içerisinden VIPER mimarisi ele alacağız.

VIPER merkezine presenter’ı alan, servis işlemlerini, ekran geçişlerini ve kullanıcının gördüğü arayüzü ayrı katmanlara ayıran bir mimaridir. Kodu test edilebilir hale getirirken düzenli yapısı sayesinde ek geliştirmelere açıktır. VIPER kabaca 5 katmandan oluşur. Bu katmanların birleşimi bir ekranı(ve ya modülü) temsil eder. Aynı zamanda her bir katman birer sınıftır.

View: Bildiğimiz gibi ViewController içerisinde bulunan kodlar diyebiliriz. Burada sadece presenterden gelecek verileri kullanırız. Farklı bir işlem yapılmaz. Sadece ilgili presenteri ile bağlıdır.

Interactor: Uygulamanın Bussines Logic olarak adlandırdığımız kısmıdır. Burada UI işlemleri yapılmaz. (Fetch,Update vs) işlemler burada gerçekleşir. MVVM tasarım desenindeki VM görevini görür.

Presenter: View ve Interactor arasındaki bağlantıyı gerçekleştirir. Interactordan aldığı verileri, View ile haberleştirip View katmanının kullanmasını sağlar. Bu katmanda UI veya bussines logic işlemleri bulunmamalıdır.

Entity: Uygulamanın Model kısmıdır. Uygulama ile ilgili Data modeller burada bulunur. Bu kısım sadece Interactor ile işbirliği yapar. Diğer kısımlarda bulunmamalıdır.

Router: Bu katman uygulamanın sayfalarının ne zaman gösterileceğini belirlememizi sağlayan katmandır. Bu katman Coordinator tasarım deseni ile modellenebilir.

Örnek bir VIPER Yapı Diyagramı şu şekilde görünmektedir;

Örnek bir VIPER Mimarisi şu şekilde görünmektedir;

 

VIPER Mimarisinin Temel Kuralları Şunlardır;

1- View sadece presenter ile konuşur

2- Interactor sadece presenter ile konuşur

3- Router sadece presenter ile konuşur

4- Servis ile haberleşme sadece interactor’da yapılır

5- Ekran geçişleri sadece router’da yapılır

Presenter’ı mimarinin merkezinde düşünerek kuralları tekrar okuyun. Böylece yapı kafanızda daha rahat canlanacaktır. Aynı zamanda Entity hariç her bir katmanın protocol’ü bulunur. Bu protocol’ler ile katmanlar arası iletişim kurulur.

 

Bu mimarinin de her mimari gibi avantajları ve dezavantajları bulunmaktadır.

Avantajları nelerdir ?

- Kodun test edilebilirliğini artırır.

- Uygulamayı parçalara ayırdığı için yenilenebilirliğini artırır.

- Kodun okunabilirliğini artırır.


Dezavantajları nelerdir ?

- Küçük projelerde kullanımı zordur.

- Büyük projelerde takımdaki herkesin bu deseni bilmesi ve projeye göre modeli doğru oturtması gerekmektedir.

- Proje içerisinde bir çok klasör, delegate bulunduğu için karmaşıklık yaratabilir.


VIPER Mimarisini az çok öğrendiğimize göre, bu mimariyi kullanırken neler yaşayacağımıza şöyle kısaca bakalım;

- VIPER ile kod geliştirmek düşünce ve kodlama açısından karmaşık ilerleyebilir diğerlerine göre.

- VIPER özellikle dağıtma yönüyle test yazmamızı kolaylaştıran fakat geliştirirken bize muhakkak yapılar kurmamızı bekleyen bir yaklaşım aksi halde karmaşa durumu söz konusu.

- VIPER gibi bir mimariyi kullanırken amacımız kod fazlalığı değil yazacağımız kodların kontrollü ve test edebilmeye açık olması gerekir.

Bu makalede sizlere VIPER mimarisini anlatmaya çalıştım okuduğunuz için teşekkürler.


 Güncellendi: Temmuz 30, 2021