Sobes.tech
Senior

Bir proje için mimari seçiminde nasıl yaklaşıyorsunuz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Mimari seçimi, projenin ölçeği, karmaşıklığı, ekip ve test edilebilirlik ile sürdürülebilirlik gereksinimleri tarafından belirlenir.

Flutter projeleri için düşündüğüm temel mimari türleri:

  • MVC (Model-Görünüm-Denetleyici): Basit, ancak sıkı bağlı bileşenler nedeniyle karmaşık UI’ler için daha az uygundur.
  • MVP (Model-Görünüm-Önizleme): MVC’ye göre sorumlulukların ayrımını iyileştirir, Önizleme arayüzüyle etkileşim kurar.
  • MVVM (Model-Görünüm-GörünümModel): Flutter’da yaygın kullanılır. GörünümModel, mantık ve durumu içerir, görünüm değişikliklere abone olur. Test için uygundur.
  • BLoC (İş Mantığı Bileşeni): Akışlara dayalı yaklaşım, durumu ve iş mantığını yönetmek için kullanılır. Temiz kod, iyi test edilebilirlik ve ölçeklenebilirlik sağlar.
  • Cubit: BLoC’nin basitleştirilmiş versiyonu, girişler için akış kullanmaz, sadece çıkışlar (Durum) için kullanır. Basit senaryolar için daha uygundur.
  • Provider: Durum ve bağımlılık yönetimi için kullanışlı, esnek ve basit bir paket. Sık sık diğer desenlerle veya bağımsız olarak basit uygulamalarda kullanılır.

Seçim süreci:

  1. Gereksinim analizi: UI karmaşıklığı, iş mantığı, çevrimdışı çalışma ihtiyacı, dış servislerle entegrasyon.
  2. Ölçeklenebilirlik ve sürdürülebilirlik: Gelecekte fonksiyonların genişletilmesi ve değişikliklerin ne kadar kolay yapılacağı.
  3. Test edilebilirlik: Birim ve widget testleri yazmanın ne kadar kolay olacağı.
  4. Ekip deneyimi: Ekip tarafından bilinen mimarinin seçimi geliştirmeyi hızlandırır.
  5. Proje büyüklüğü: Küçük projeler için Provider veya Cubit/ basit mimari yeterli olabilir. Büyük ve karmaşık projeler için BLoC veya MVVM daha uygundur.

Orta/karmaşık proje için yaklaşım kombinasyonu örneği:

  • Global durum yönetimi: Provider veya Riverpod (Provider’a alternatif, derleme zamanında güvenli).
  • Özellik-spesifik durum yönetimi: BLoC veya Cubit, karmaşık iş mantığını içeren modüller için.
  • Bağımlılık enjeksiyonu: GetIt veya Injectable, bağımlılıkları yönetmek için.
  • Yönlendirme: go_router veya auto_route.

Önemli bir nokta: uyarlanabilirlik. Mimari, gerektiğinde farklı yaklaşımları adapte edebilecek veya birleştirebilecek kadar esnek olmalıdır. Temel prensipler arasında temiz kod, SOLID gibi ilkeleri takip etmek ve net sorumluluk ayrımını korumak yer alır.