Android'de uygulama modülerleştirme rehberi

Birden fazla Gradle modülü olan projeler çok modüllü proje olarak bilinir. Bu kılavuzda, çok modüllü Android uygulamaları geliştirmek için en iyi uygulamalar ve önerilen kalıplar ele alınmaktadır.

Gittikçe büyüyen kod tabanı sorunu

Sürekli büyüyen bir kod tabanı, ölçeklenebilirlik, okunabilirlik ve genel kod kalitesi genelde zamanla azalır. Bunun sonucunda kod tabanının boyutu, kolayca yönetilebilen bir yapıyı zorunlu kılmak için aktif önlemler alınmadan önce boyut olarak artmış olur. Modülerleştirme, kod tabanınızı sürdürülebilirliği iyileştirecek ve bu sorunları önlemeye yardımcı olacak şekilde yapılandırmanın bir yoludur.

Modülerleştirme nedir?

Modülerleştirme, kod tabanını serbest bağlantılı ve kendi içinde yer alan parçalar halinde düzenleme uygulamasıdır. Her bölüm bir modüldür. Modüller bağımsızdır ve net bir amaca hizmet eder. Bir problemi daha küçük ve çözülmesi kolay alt problemlere bölerek büyük bir sistemi tasarlama ve sürdürmenin karmaşıklığını azaltırsınız.

Şekil 1: Örnek çok modüllü kod tabanının bağımlılık grafiği

Modülerleştirmenin avantajları

Modülerleştirmenin birçok avantajı olsa da, her biri kod tabanının bakımını ve genel kalitesini iyileştirmeye odaklanır. Aşağıdaki tabloda temel avantajlar özetlenmektedir.

Avantaj Özet
Yeniden kullanılabilirlik Modülerleştirme, aynı temelden kod paylaşımı ve birden fazla uygulama oluşturma fırsatları sağlar. Modüller etkili bir yapı taşıdır. Uygulamalar, özelliklerinin ayrı modüller halinde organize edildiği özelliklerin toplamı olmalıdır. Belirli bir modülün sunduğu işlevler, belirli bir uygulamada etkinleştirilebilir veya devre dışı bırakılabilir. Örneğin, :feature:news, tam sürüm aroma ve giyim uygulamasının bir parçası olabilir ama demo sürümünün aromasının bir parçası olmayabilir.
Yüksek düzeyde görünürlük kontrolü Modüller, kod tabanınızın diğer kısımlarında gösterilen öğeleri kolayca kontrol etmenizi sağlar. Herkese açık arayüzünüz modülün dışında kullanılmasını önlemek için internal veya private olarak işaretleyebilirsiniz.
Özelleştirilebilir yayınlama Play Feature Delivery, uygulama paketlerinin gelişmiş özelliklerini kullanarak uygulamanızın belirli özelliklerini koşullu olarak veya isteğe bağlı olarak yayınlamanıza olanak tanır.

Yukarıdaki avantajlar yalnızca modüler bir kod tabanıyla elde edilebilir. Aşağıdaki avantajlar diğer tekniklerle elde edilebilir, ancak modülerleştirme bunları daha da etkili hale getirmenize yardımcı olabilir.

Avantaj Özet
Ölçeklenebilirlik Birbirine sıkı sıkıya bağlı bir kod tabanındaki tek bir değişiklik, kodun alakasız görünen bölümlerindeki bir dizi değişikliği tetikleyebilir. Düzgün modülerleştirilmiş bir proje, endişelerin birbirinden ayrılması ilkesini benimseyip bağlantıyı kısıtlar. Bu, katkıda bulunanların daha fazla bağımsızlık kazanmasını sağlar.
Sahiplik Modüller, otonomiyi etkinleştirmenin yanı sıra sorumluluğu uygulamak için de kullanılabilir. Bir modülün kodu yönetme, hataları düzeltme, test ekleme ve değişiklikleri incelemeden sorumlu özel bir sahibi olabilir.
Kapsülleme Kapsayıcılık, kodunuzun her bir parçası hakkında olabildiğince az bilgi sahibi olmanız gerektiği anlamına gelir. İzole edilmiş kod daha kolay okunabilir ve anlaşılabilir.
Test edilebilirlik Test edilebilirlik, kodunuzu test etme kolaylığını tanımlar. Test edilebilir kod, bileşenlerin tek başına kolayca test edilebileceği bir koddur.
Derleme zamanı Artımlı derleme, derleme önbelleği veya paralel derleme gibi bazı Gradle işlevleri, derleme performansını iyileştirmek için modülerlikten yararlanabilir.

Sık karşılaşılan hatalar

Kod tabanınızın ayrıntı düzeyi, modüllerden ne ölçüde oluştuğudur. Daha ayrıntılı bir kod tabanında daha küçük ve modüller vardır. Tekilleştirilmiş bir kod tabanı tasarlarken ayrıntı düzeyine karar vermeniz gerekir. Bunun için kod tabanınızın boyutunu ve nispeten karmaşık olup olmadığını göz önünde bulundurun. Çok ayrıntılı işlem yapmak, ek yükü de beraberinde getirir ve çok kabalık eklemek modülerleştirmenin faydalarını azaltır.

Sık karşılaşılan bazı hatalar şunlardır:

  • Çok ayrıntılı: Her modül, karmaşık derleme ve ortak kod biçiminde belirli bir ek yük sağlar. Karmaşık bir derleme yapılandırması, modüller genelinde yapılandırmaların tutarlılığını korumayı zorlaştırır. Çok fazla standart koda sahip olmak, bakımı zor olan hantal bir kod tabanına yol açar. Ek yük, ölçeklenebilirlik iyileştirmelerini olumsuz etkiliyorsa bazı modülleri birleştirmeyi düşünmeniz gerekir.
  • Çok genel son derece ayrıntılı: Buna karşılık, modülleriniz çok büyüyorsa başka bir monolit elde edebilir ve modülerliğin sunduğu avantajları kaçırabilirsiniz. Örneğin, küçük bir projede veri katmanını tek bir modüle yerleştirebilirsiniz. Ancak büyüdükçe depoları ve veri kaynaklarını bağımsız modüller halinde ayırmanız gerekebilir.
  • Çok karmaşık: Projenizi modüler hale getirmek her zaman anlamlı olmaz. En önemli faktör kod tabanının boyutudur. Projenizin belirli bir eşiğin üzerine çıkacağını düşünmüyorsanız ölçeklenebilirlik ve derleme süresinden elde edilen kazançlar geçerli olmaz.

Modülerleştirme benim için doğru teknik mi?

Yeniden kullanılabilirliğin, katı görünürlük denetiminin veya Play Özellik Dağıtımı'nın avantajlarından yararlanmanız gerekiyorsa modülerleştirme sizin için bir zorunluluktur. Bunu yapmıyorsanız ama yine de iyileştirilmiş ölçeklenebilirlik, sahiplik, kapsülleme veya derleme sürelerinden yararlanmak istiyorsanız modülerleştirmeyi göz önünde bulundurmaya değer.

Sana Özel