Birden fazla Gradle modülü içeren projeye çok modüllü proje denir. Bu kılavuz, çok modüllü Android uygulamaları geliştirme ile ilgili en iyi uygulamaları ve önerilen kalıpları kapsar.
Büyüyen kod tabanı sorunu
Sürekli büyüyen bir kod tabanında ölçeklenebilirlik, okunabilirlik ve genel kod kalitesi zamanla azalır. Bu durum, kod tabanının boyutunun artmasına rağmen bakımını yapanların kolayca bakımı yapılabilecek bir yapıyı zorunlu kılmak için aktif önlemler almaması sonucunda ortaya çıkar. Modülerleştirme, kod tabanınızı sürdürülebilirliği artıracak ve bu sorunları önlemeye yardımcı olacak şekilde yapılandırmanın bir yoludur.
Modülerleştirme nedir?
Modülerleştirme, kod tabanını gevşek bağlı ve bağımsız parçalar halinde düzenleme uygulamasıdır. Her bölüm bir modüldür. Her modül bağımsızdır ve net bir amaca hizmet eder. Bir sorunu daha küçük ve çözülmesi daha kolay alt sorunlara bölerek büyük bir sistemi tasarlama ve sürdürme karmaşıklığını azaltırsınız.

Modülerleştirmenin avantajları
Modülerleştirmenin birçok avantajı vardır. Bu avantajların her biri, kod tabanının sürdürülebilirliğini ve genel kalitesini artırmaya odaklanır. Aşağıdaki tabloda temel avantajlar özetlenmektedir.
Avantajı | Özet |
---|---|
Yeniden kullanılabilirlik | Modülerleştirme, kod paylaşımı ve aynı temelden birden fazla uygulama oluşturma fırsatları sunar. Modüller, etkili bir şekilde yapı taşlarıdır. Uygulamalar, özelliklerinin toplamı olmalı ve özellikler ayrı modüller olarak düzenlenmelidir. Belirli bir modülün sağladığı işlev, belirli bir uygulamada etkinleştirilebilir veya etkinleştirilmeyebilir. Örneğin, :feature:news , tam sürüm varyantının ve Wear uygulamasının bir parçası olabilir ancak demo sürüm varyantının bir parçası olmayabilir. |
Sıkı görünürlük kontrolü | Modüller, kod tabanınızın diğer bölümlerine neyi göstereceğinizi kolayca kontrol etmenizi sağlar. Genel arayüzünüz hariç her şeyi internal veya private olarak işaretleyerek modülün dışında kullanılmasını engelleyebilirsiniz. |
Özelleştirilebilir yayınlama | Play Özellik Dağıtımı, uygulama paketlerinin gelişmiş özelliklerini kullanarak uygulamanızın belirli özelliklerini koşullu olarak veya isteğe bağlı şekilde yayınlamanıza olanak tanır. |
Modülerleştirmenin avantajları yalnızca modülerleştirilmiş bir kod tabanıyla elde edilebilir. Aşağıdaki avantajlar başka tekniklerle de elde edilebilir ancak modülerleştirme, bu avantajları daha da iyi uygulamanıza yardımcı olabilir.
Avantajı | Özet |
---|---|
Ölçeklenebilir | Sıkıca bağlı bir kod tabanında tek bir değişiklik, kodun görünüşte alakasız kısımlarında bir dizi değişikliği tetikleyebilir. Doğru şekilde modülerleştirilmiş bir proje, ilgi alanlarının ayrılması ilkesini benimser ve bu nedenle bağlantıyı sınırlar. Bu sayede katılımcılar daha fazla özerklik kazanır. |
Sahiplik | Modüller, özerkliği etkinleştirmenin yanı sıra hesap verebilirliği zorunlu kılmak için de kullanılabilir. Bir modülün, kodu korumak, hataları düzeltmek, test eklemek ve değişiklikleri incelemekten sorumlu özel bir sahibi olabilir. |
Kapsülleme | Kapsülleme, kodunuzun her bölümünün diğer bölümler hakkında mümkün olduğunca az bilgiye sahip olması gerektiği anlamına gelir. İzole edilmiş kodun okunması ve anlaşılması daha kolaydır. |
Test Edilebilirlik | Test edilebilirlik, kodunuzu test etmenin ne kadar kolay olduğunu gösterir. Test edilebilir bir kod tabanı, bileşenlerin kolayca ayrı ayrı test edilebildiği bir kod tabanıdır. |
Derleme zamanı | Artımlı derleme, derleme önbelleği veya paralel derleme gibi bazı Gradle işlevleri, derleme performansını artırmak için modülerlikten yararlanabilir. |
Sık karşılaşılan sorunlar
Kod tabanınızın ayrıntı düzeyi, modüllerden oluşma derecesidir. Daha ayrıntılı bir kod tabanında daha fazla ve daha küçük modül bulunur. Modüler bir kod tabanı tasarlarken ayrıntı düzeyine karar vermeniz gerekir. Bunu yapmak için kod tabanınızın boyutunu ve göreceli karmaşıklığını göz önünde bulundurun. Çok ayrıntılı bir yapı, ek yükü ağırlaştırır. Çok kaba bir yapı ise modülerleştirmenin avantajlarını azaltır.
Yaygın hatalardan bazıları şunlardır:
- Çok ayrıntılı: Her modül, derleme karmaşıklığının artması ve standart kod şeklinde belirli bir ek yük getirir. Karmaşık bir derleme yapılandırması, modüller arasında yapılandırmaların tutarlı kalmasını zorlaştırır. Çok fazla standart kod bakımı zor olan hantal bir kod tabanına yol açar. Ek yük, ölçeklenebilirlik iyileştirmelerini engelliyorsa bazı modülleri birleştirmeyi düşünebilirsiniz.
- Çok kaba taneli: Bunun aksine, 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ülün içine yerleştirebilirsiniz. Ancak büyüdükçe depoları ve veri kaynaklarını bağımsız modüllere ayırmak gerekebilir.
- Çok karmaşık: Projenizi modüler hale getirmek her zaman mantıklı olmayabilir. Baskın faktör, kod tabanının boyutudur. Projenizin belirli bir eşiğin ötesine geçmesini beklemiyorsanız ölçeklenebilirlik ve derleme süresi avantajları geçerli olmaz.
Modülerleştirme benim için doğru teknik mi?
Yeniden kullanılabilirlik, sıkı görünürlük kontrolü veya Play Özellik Dağıtımı'nın avantajlarından yararlanmak istiyorsanız modülerleştirme sizin için bir zorunluluktur. Bu avantajlardan yararlanmak istemiyorsanız ancak yine de ölçeklenebilirlik, sahiplik, kapsülleme veya derleme sürelerinde iyileşme elde etmek istiyorsanız modülerleştirme üzerinde düşünmeniz gereken bir konudur.
Örnekler
- Now in Android: Modülerleştirme özelliğine sahip, tam işlevli bir Android uygulaması.
- Çok modüllü mimari örneği