Flow Coordinators ve Swift: İş akışı yönetiminde kolaylık ve esneklik

Aybars Yalcin
3 min readDec 22, 2022

--

Merhabalar, ben Aybars ve bu yazıda size Flow Coordinator’ları projelerimizde nasıl kullandığımız hakkında bilgi vermek istiyorum.

Bilindiği gibi yazılım projeleri akışlardan oluşur ve bu akışlar bazen çok karmaşık hale gelebilir. Bu durumda işin içinden çıkmak için bazı çözümler aramamız gerekiyor. Bu çözümlerden biri de Flow Coordinator’lardır.

  • Öncelikle Tanımı bir görelim:

“Flow Coordinator’lar, bir sistemdeki iş akışını düzenlemek ve yönetmek için kullanılan yazılım araçlarıdır. Bu araçlar sayesinde iş akışlarını kolaylıkla yönetebilir duruma geliriz.”

Bir geliştirici, karmaşık bir ekran geliştirirken birçok farklı sorunla karşılaşabilir. Örneğin, ekranın tasarımı ve iç içe geçmiş akışlar zorlu olabilir. Bu durum geliştirici için can sıkıcı olabilir.

Peki ne yapmalı?

Öncelikle, bir projede görev alan tüm ekibin akışlar konusunda hakim olması önemlidir. Özellikle de bu akışı geliştirecek kişinin aklında herhangi bir soru olmaması lazım. Her şeyin açık ve net bir şekilde tanımlanması gerekir.

Biz takım içinde bu sorunları nasıl çözüyoruz. Bir örnek ile açıklayayım:

Mobil uygulamamızda bir adres akışı olduğunu varsayalım(bu akış içinde harita da seçim yapabilme ve adres çubuğundan arama gibi özellikler olsun) ve bu akışı bir çok ekrandan çağırmamız gerekiyor. Fakat her adres akışı bittiğinde ise farklı bir akışın çalıştırılması isteniyor diyelim. Buradaki çözüm aslında projemizde Flow Coordinator’ların kullanılmasıyla çözülebilir.

Örnek Proje Akışı:

Anasayfa ve Detay Sayfa Akışları
Adres Akışı

Bir işe başlarken mutlaka yukarıdaki akışlara benzer bir akış diagramı çıkartmanızı tavsiye ederim. Ürün sahipleri, geliştiriciler ve test edecek kişiler için akışta el sıkışmanın en güzel yolu diyebilirim. Biz projelerimizde eğer karmaşık olduğunu düşündüğümüz durumlarda buna benzer bir akış diagramı çizmeyi tercih ediyoruz. Bu akış diagramları sonrasında ise ekip hızlıca aksiyon alabiliyor.

Birazda kod kısmına bakalım:

Application Coordinator burada en önemli rolü üstlenmektedir. Bu class akışları yönetmemize izin verir. Bir akışın bitip diğerinin başlamasını bu class içersinde yönetmek karmaşıklığı azaltacaktır.

Örneğimize geri dönecek olursak büyük akışlara ve detay ekranlarına sahip bir projede çalışıyorsunuz diyelim. Burada sizin yeni geliştireceğiniz bir feature belki projenin en detay sayfalarında yer alıyor. Bu durumda projeyi run ettiğinizde her seferinde login olmak anasayfayı görmek ve detaya gitmek durumunda kaldığınızı düşünelim. Bu sizin development sürecinizi farketmesenizde çok arttıran bir durumdur. Ama Application Coordinator bu durumda bizi kurtarıyor. İstediğiniz akışın ilk olmasını rahatlıkla sağlayabilirsiniz. Bu da development sürenizin düşmesi anlamına gelir.

Her coordinator’ın bir start() methodu vardır ve bu method o akışın başlamasını sağlar. Her bir sayfa(ViewController)’nın aksiyonlarını belirlememiz gerekir. Bizim örneğimizde HomeViewController’da bir buton var ve tıklandığında Adres akışı çağrılsın. Bu durumda onAddressFlow() methodu ile o aksiyonu çağırıp bir sonraki akışı coordinator’ı oluşturduğumuz yerde rahatlıkla verebiliriz.

Flow Coordinator’lar sayesinde; ViewController’lar aksiyonların sonucunda ne olacağını bilmezler ve nereye gitmesi gerektiğine Coordinator class’ları karar verir.

Flow’ların Projedeki klasör dizilimi

Avantajları:

1- Proje’de karmaşıklığı azaltır. Bir standart koyar ve bu standarda uymanızı sağlar.

2- İstediğiniz akışdan projeyi çalıştırmanıza imkan sağlar. Böylelikle run ettikten sonra ihtiyacınız olmayan ekranları görmenize gerek kalmaz.

3- Farklı ekiplerin yazmış olduğunuz akışları sadece çağırması yeterli olur ve bitiş noktasında ne yapmaları gerektiğine kendileri karar verebilirler. Siz sadece kendi akışınıza odaklanırsınız.

Dezavantajları:

1- Projeye entegre etmek zamanızı alabilir.

2- Ekibin alışma süreci yavaş olabilir.

3- Memory yönetimine dikkat etmeniz gerekir. Karmaşık akışlarda eğer akışlarınızı finish etmezseniz childcoordinator’larınızı çoklayabilirsiniz.

Sonuç olarak, bu yazımızda Flow Coordinator’ları projemizde nasıl kullandığımızdan bahsetmiş oldum.

Umarım keyifli bir yazı olmuştur.

Projenin tamamına erişmek için bu linkten projeyi indirip çalıştırabilirsiniz.

Diğer makalelerde görüşmek üzere… 👋

--

--