- Konu sahibi
- #1
Yeni bir mobil uygulamaya başlarken en büyük hata, dil ya da çerçeveden önce mimariyi düşünmemektir. Kotlin, Swift, Java, Dart veya JavaScript seçimi elbette önemlidir; ama asıl farkı çoğu zaman kodun nasıl organize edildiği belirler. Küçük bir proje ilk günlerde sorunsuz görünse de, ekran sayısı artınca, API entegrasyonları çoğalınca ve test ihtiyacı doğunca yapı kararları hemen hissedilir.
Mobil uygulamada mimari; ekranlar, iş kuralları, veri katmanı ve dış servislerle olan ilişkiyi düzenler. Basit anlatımla, uygulamanın hangi parçanın neyi yapacağını belirler. Bu karar erken verilmezse, kod zamanla ekranlara yapışır ve değiştirmesi zorlaşır.
Örneğin tek bir giriş ekranı ile başlayan uygulama, kısa sürede kayıt, profil, ödeme, bildirim ve ayarlar gibi bölümlere ayrılabilir. Eğer tüm mantık doğrudan ekran içinde yazılırsa, yeni özellik eklemek basit görünse de bakım maliyeti hızla artar. Bu yüzden mimari, ilk sürümde bile ileride büyüme payı bırakmalıdır.
Her uygulama için en ağır mimariyi seçmek gerekmez. Küçük ve kısa ömürlü bir prototipte fazla katman kurmak zaman kaybı olabilir. Buna karşılık, gerçek kullanıcıya çıkacak ve uzun süre bakım görecek bir uygulamada düzenli katmanlaşma gerekir.
Pratik ayrım şu şekilde düşünülebilir:
Sağlam bir başlangıçta en azından şu sorumluluklar birbirinden ayrılmalıdır:
En yaygın hata, “şimdilik hızlı olsun” diye tüm kodu tek ekrana veya tek sınıfa yığmaktır. Başlangıçta hızlı görünse de sonradan test yazmak, hata ayıklamak ve yeni geliştirici eklemek zorlaşır.
Diğer sık hatalar:
Mimaride fazla teoriye boğulmadan karar vermek için şu sorular yeterli olabilir:
Mobil uygulamada doğru mimari seçimi, uygulamanın daha ilk sürümde kusursuz olması anlamına gelmez. Ama büyüdükçe bozulmayan bir temel kurmak anlamına gelir. En iyi yaklaşım, gereksiz soyutlamadan kaçınırken sorumlulukları net ayırmaktır.
Kısacası; hangi dil veya çerçeveyi seçerseniz seçin, kodu ekran merkezli değil sorumluluk merkezli kurmak uzun vadede en çok faydayı sağlar.
Mimari seçimi neden ilk kararlardan biri olmalı?
Mobil uygulamada mimari; ekranlar, iş kuralları, veri katmanı ve dış servislerle olan ilişkiyi düzenler. Basit anlatımla, uygulamanın hangi parçanın neyi yapacağını belirler. Bu karar erken verilmezse, kod zamanla ekranlara yapışır ve değiştirmesi zorlaşır.
Örneğin tek bir giriş ekranı ile başlayan uygulama, kısa sürede kayıt, profil, ödeme, bildirim ve ayarlar gibi bölümlere ayrılabilir. Eğer tüm mantık doğrudan ekran içinde yazılırsa, yeni özellik eklemek basit görünse de bakım maliyeti hızla artar. Bu yüzden mimari, ilk sürümde bile ileride büyüme payı bırakmalıdır.
Hafif proje ile büyüme ihtimali olan proje aynı şekilde tasarlanmaz
Her uygulama için en ağır mimariyi seçmek gerekmez. Küçük ve kısa ömürlü bir prototipte fazla katman kurmak zaman kaybı olabilir. Buna karşılık, gerçek kullanıcıya çıkacak ve uzun süre bakım görecek bir uygulamada düzenli katmanlaşma gerekir.
Pratik ayrım şu şekilde düşünülebilir:
- Tek ekranlı ya da çok sınırlı işlevli proje: sade yapı, az katman, hızlı geliştirme
- Birden çok ekran ve API bağımlılığı olan proje: katmanlı yapı, test edilebilir kod, net sorumluluklar
- Uzun ömürlü ürün: yeniden kullanılabilir bileşenler, bağımlılıkların ayrılması, ölçeklenebilir klasör yapısı
Temel olarak hangi parçalar ayrılmalı?
Sağlam bir başlangıçta en azından şu sorumluluklar birbirinden ayrılmalıdır:
- Arayüz katmanı: ekranın görünümü ve kullanıcı etkileşimi
- İş mantığı: kural, hesaplama, doğrulama ve akış yönetimi
- Veri katmanı: API, yerel veritabanı, cache veya cihaz depolaması
- Model yapıları: uygulamanın taşıdığı verinin düzenli temsili
Yeni başlayanların sık yaptığı hatalar
En yaygın hata, “şimdilik hızlı olsun” diye tüm kodu tek ekrana veya tek sınıfa yığmaktır. Başlangıçta hızlı görünse de sonradan test yazmak, hata ayıklamak ve yeni geliştirici eklemek zorlaşır.
Diğer sık hatalar:
- Ekran içinde ağ isteği, doğrulama ve navigasyonu aynı yerde toplamak
- Sabit değerleri her dosyaya ayrı ayrı yazmak
- Veri modelini UI ile karıştırmak
- Test edilmeyen iş kurallarını doğrudan ekrana bağlamak
- Klasör yapısını sade tutmak yerine erken aşamada aşırı karmaşıklaştırmak
Basit bir karar ölçütü
Mimaride fazla teoriye boğulmadan karar vermek için şu sorular yeterli olabilir:
- Uygulama birkaç hafta mı yaşayacak, yoksa uzun vadeli bir ürün mü?
- Kaç ekran olacak ve ekranlar birbirine ne kadar bağlı?
- API, yerel veri ve kullanıcı girişi gibi farklı veri kaynakları var mı?
- Kodun başka geliştiriciler tarafından da okunması gerekecek mi?
- Özelliklerin test edilmesi kritik mi?
Sonradan düzeltmek yerine baştan sade kurmak daha kolaydır
Mobil uygulamada doğru mimari seçimi, uygulamanın daha ilk sürümde kusursuz olması anlamına gelmez. Ama büyüdükçe bozulmayan bir temel kurmak anlamına gelir. En iyi yaklaşım, gereksiz soyutlamadan kaçınırken sorumlulukları net ayırmaktır.
Kısacası; hangi dil veya çerçeveyi seçerseniz seçin, kodu ekran merkezli değil sorumluluk merkezli kurmak uzun vadede en çok faydayı sağlar.