VIPER

Sefa Çelik
Mobiroller Tech
Published in
2 min readApr 4, 2022

Yazılım geliştirme sürecinde bir çok zorluk ve bu zorluklardan doğan ihtiyaçlar vardır. Bunlardan biri de yazılım mimarileridir. Mimariler kod yazanlar için bir çok kolaylık sunar. Bunlara örnek vermek gerekirse:

1- Okuma/yazma kolaylaşır.

2- Projenin yönetimi ve denetimi kolaylaşır

3- Testlerin yapılması ve yazılması kolaylaşır.

MVC, 1996 yılında kullanılmaya başlamış ve projeleri modüllere ayırmada başarılı olmuş bir modeldir. Microsoft ve Amazon gibi şirketler bu mimari ile geliştirme yaptı ve yapmakta. Bu şirketlerin yanı sıra Apple da kendi iOS uygulamalarında MVC ile geliştirme yapıyor. Fakat projelerin büyümesi, karmaşıklığın artması ile MVC ihtiyaçları karşılayamamaya başladı. Viper da bu ihtiyaçtan doğan bir mimarilerden biri.

Viper ismini View, Interactor, Presenter, Entity, Router’ın ilk harflerinden almakta.

View:

Kullanıcının göreceği kısım burada oluşturulur. Presenter ile haberleşir. Hangi içeriğin gösterileceği View’e bağlıdır. Kullanıcı actionları Presenter’a yönlendirir.

Interactor:

Business logic işlemlerinin yapıldığı kısımdır. Presenter ile haberleşir.

Presenter:

Presenter, View ile ilgili logic’i içeren kısımdır. Router, Interactor ve View ile haberleşir. Interactor’dan data alır ve View katmanına iletir. View’dan da kullanıcı aksiyonlarını alır ve yönlendirir. View ile Interactor arasında bir köprü görevi görür.

Entity:

Interactor’da kullanılan modellleri içerir. Entity’ler sadece Interactor tarafından kullanılır.

Router:

Ekranların ne zaman gösterileceğinin belirlendiği, uygulama flowunun kontrol edildiği katmandır. Presenter ile haberleşir.

App projesini bir ev olarak düşünürsek her bir sayfayı bir oda, her bir odayı da bir viper modülü olarak düşünebiliriz. Bu modüller arasındaki haberleşme ise protokollerle yapılır. Yaşam döngüleri ve referans yapısı göz önüne alındığında VIPER tasarım mimarisi iOS projeler için en uygun olanıdır. Büyük ve bakım yapılması zor olan projelerde başarılı bir şekilde uygulanabilir.

VIPER mimarisinin avantajları

1- Kodun test edilebilirliğini ve tekrar kullanılabilirliğini sağlar.

2- Rollerine göre uygulamayı komponentlere böler ve ilgili kodların birbirinden bağımsız ayrılmasını sağlar.

3- Yeni özelliklerin eklenmesini kolaylaştırır.

4- UI logic Business logicden ayrı yazıldığı için testlerin yazımını kolaylaştırır.

VIPER mimarisinin dezavantajları

1- Küçük projelerde karmaşıklığı artırır.

2- Ekibin paterni iyi bilmesi ve ona uygun kod yazması gerekir.

3- Yeni başlayanlarda paterne uygun kod yazma için öğrenme süreci gerektirir.

Viper Örnek Proje linki: https://github.com/sefaceliik/Viper-Example/tree/main/Viper-Example

--

--