Birden fazla Gradle modülü bulunan projelere çok modüllü proje denir. Bu kılavuzda, çok modüllü Android uygulamaları geliştirmeyle ilgili en iyi uygulamalar ve önerilen kalıplar bulunmaktadır.
Büyüyen kod tabanı sorunu
Sürekli büyüyen bir kod tabanında ölçeklenebilirlik, okunabilirlik ve genel kod kalitesi zamanla genellikle azalır. Bunun nedeni, destekleyicilerin kolayca sürdürülebilir bir yapıyı uygulamak için etkin önlemler almamasından dolayı kod tabanının büyümesi. Modülerleştirme, kod tabanınızı sürdürülebilirliği iyileştirecek ve bu sorunlardan kaçınmaya yardımcı olacak şekilde yapılandırma yöntemidir.
Modülerleştirme nedir?
Modülerleştirme, bir kod tabanını serbest bağlantılı ve kendi kendine sınırlı 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 problemi daha küçük ve çözülmesi daha kolay alt problemlere bölerek büyük bir sistemi tasarlama ve sürdürmenin karmaşıklığını azaltır.
![](https://developer.android.google.cn/static/topic/modularization/images/1_sample_dep_graph.png?authuser=5&hl=tr)
Modülerleştirmenin avantajları
Modülerleştirmenin birçok avantajı vardır ancak her biri kod tabanının sürdürülebilirliğini ve genel kalitesini iyileştirmeye odaklanır. Aşağıdaki tabloda temel avantajları özetlenmektedir.
Avantaj | Özet |
---|---|
Yeniden kullanılabilirlik | Modülerleştirme, kod paylaşma ve aynı temelden birden fazla uygulama oluşturma fırsatları sağlar. Modüller etkili bir yapı taşlarıdır. Uygulamalar, özelliklerinin bir bütünü olmalıdır. Özellikler ayrı modüller halinde düzenlenmiş olmalıdır. Belirli bir modülün sağladığı işlevler, belirli bir uygulamada etkinleştirilebilir veya etkinleştirilmeyebilir. Örneğin, :feature:news aroma ve Wear uygulamasının tam versiyonunun bir parçası olabilir ancak demo sürümünün parçası olmayabilir. |
Katı görünürlük denetimi | Modüller, kod tabanınızın diğer bölümlerinde nelerin gösterileceğini kolayca kontrol etmenizi sağlar. Herkese açık arayüzünüz dışındaki her şeyi, modül dışında kullanılmasını önlemek için internal veya private olarak işaretleyebilirsiniz. |
Ö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ı olarak sunmanıza olanak tanır. |
Yukarıdaki avantajlara yalnızca modülerleştirilmiş bir kod tabanıyla ulaşılabilir. Diğer tekniklerle aşağıdaki avantajlar elde edilebilir ancak modülerleştirme sayesinde bunları daha da fazla uygulayabilirsiniz.
Avantaj | Özet |
---|---|
Ölçeklenebilir | Birbirine sıkı sıkıya bağlı bir kod tabanında tek bir değişiklik, kodun alakasız görünen kısımlarında bir dizi değişikliği tetikleyebilir. Uygun şekilde modülerleştirilmiş bir proje endişelerin ayrılması ilkesini benimser ve dolayısıyla bağlantıyı sınırlandırır. Bu da katkıda bulunanları daha fazla özerklik sağlayarak güçlendirir. |
Sahiplik | Modüller, özerkliği sağlamanın yanı sıra hesap verebilirliği sağlamak için de kullanılabilir. Bir modülün, kodun bakımından, hataları düzeltmekten, test eklemekten ve değişiklikleri gözden geçirmekten sorumlu olan özel bir sahibi olabilir. |
Kapsülleme | Kapsülleme, kodunuzun her bir parçasının diğer bölümler hakkında mümkün olan en az miktarda bilgiye sahip olması gerektiği anlamına gelir. Yalıtılmış kodun okunması ve anlaşılması daha kolaydır. |
Test edilebilirlik | Test edilebilirlik, kodunuzu test etmenin ne kadar kolay olduğunu belirtir. Test edilebilir kod, bileşenlerin yalıtım halinde kolayca test edilebileceği koddur. |
Derleme zamanı | Artımlı derleme, önbellek derleme veya paralel derleme gibi bazı Gradle işlevleri, derleme performansını iyileştirmek için modülerlikten yararlanabilir. |
Sık karşılaşılan tehlikeler
Kod tabanınızın ayrıntı düzeyi, modüllerden ne ölçüde oluştuğunu ifade eder. Daha ayrıntılı bir kod tabanında daha çok, daha küçük modüller bulunur. Modülerleştirilmiş bir kod tabanı tasarlarken ayrıntı düzeyine karar vermelisiniz. Bu işlemi yaparken kod tabanınızın boyutunu ve göreceli karmaşıklığını göz önünde bulundurun. Çok ince detaylara inmek ek yükü bir yük haline getirir, çok dar giderler ise modülerleştirmenin faydalarını azaltır.
Sık karşılaşılan bazı tehlikeler aşağıda belirtilmiştir:
- Çok ayrıntılı: Her modül, derleme karmaşıklığı ve standart kod gibi belirli bir miktarda ek yük getirir. Karmaşık bir derleme yapılandırması, modüller arasında yapılandırmaların tutarlı olmasını zorlaştırır. Çok fazla standart kod, kullanılması zor olan hantal bir kod tabanına yol açar. Genel gider, ölçeklenebilirlik iyileştirmelerine engel oluyorsa bazı modülleri birleştirmeyi düşünmeniz gerekir.
- Çok ayrıntılı: Buna karşılık, modülleriniz çok fazla büyürse 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ştirmekte sakınca yoktur. 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. En önemli faktör kod tabanının boyutudur. Projenizin belirli bir eşiğin üzerine çıkmasını beklemiyorsanız ölçeklenebilirlik ve derleme süresi kazanımları geçerli olmaz.
Modülerleştirme benim için doğru teknik mi?
Yeniden kullanılabilirlik, sıkı görünürlük kontrolü gibi avantajlara ya da Play Özellik Dağıtımı'nı kullanmaya ihtiyacınız varsa modülerleştirmeyi kullanmanız gerekir. Yoksa ama yine de iyileştirilmiş ölçeklenebilirlik, sahiplik, kapsülleme veya derleme sürelerinden yararlanmak istiyorsanız modülerleştirmeyi göz önünde bulundurmalısınız.
Sana Özel
- Şimdi Android'de - Modülerleştirme özelliğine sahip, tamamen işlevsel bir Android uygulaması.
- Çok modüllü mimari örneği