يُعرَف المشروع الذي يتضمّن وحدات Gradle متعدّدة على أنه مشروع متعدد الوحدات. يشمل هذا الدليل أفضل الممارسات والأنماط المقترَحة لتطوير تطبيقات Android متعددة الوحدات.
مشكلة متزايدة في قاعدة الرموز
في إطار زيادة الرموز الصالحة للاستخدام مع تزايدها، كثيرًا ما تنخفض معدّلات القابلية للقراءة والجودة العامة مع مرور الوقت. والسبب في ذلك هو زيادة حجم قاعدة الرموز البرمجية بدون اتّخاذ إجراءات صيانة مُطبَّقة لتنفيذ البنية التي يمكن صيانتها بسهولة. يمثّل التحليل طريقة هيكلة قاعدة الترميز بطريقة تسهّل صيانتها وتساعد في تجنّب تلك المشاكل.
ما المقصود بالتقسيم؟
المقصود بتقسيم التطبيق إلى نماذج هو تنظيم قاعدة رموز في أجزاء ذات أجزاء غير محدّدة ومضمونة ذاتيًا. وكل جزء هو وحدة. تكون كل وحدة مستقلة وتخدم غرضًا واضحًا. من خلال تقسيم مشكلة إلى أصغر حجمًا وأسهل في حل المشاكل الفرعية، تقلل من تعقيد تصميم نظام كبير والحفاظ عليه.

مزايا تقسيم الوحدات
تعود مزايا تقسيم الوحدات إلى عدّة، على الرغم من أنّ كل مركز يركّز على تحسين قابلية الاحتفاظ بقاعدة الرموز وجودة المحتوى بشكل عام. يلخّص الجدول التالي المزايا الرئيسية.
المزايا | ملخّص |
---|---|
إعادة الاستخدام | ويتيح لك وضع النماذج إمكانية مشاركة الرموز وإنشاء تطبيقات متعددة من المؤسسة نفسها. الوحدات هي الوحدات الأساسية بفاعلية. يجب أن يكون للتطبيقات مجموع ميزاتها حيث يتم تنظيم الميزات كوحدات منفصلة. إنّ الوظائف التي توفّرها وحدة معيّنة قد تكون مفعَّلة أو غير مفعَّلة في تطبيق معيّن. على سبيل المثال، يمكن أن تشكّل السمة :feature:news جزءًا من النُسخ الكاملة للإصدار ومكوّنًا من تطبيق Wear OS، ولكن ليس جزءًا من نسخة الإصدار التجريبي. |
التحكم الصارم في مستوى الرؤية | تتيح لك الوحدات التحكّم بسهولة في ما تعرضه على الأجزاء الأخرى من قاعدة الرموز. يمكنك وضع علامة internal أو private على كل العناصر باستثناء الواجهة العامة لمنع استخدامها خارج الوحدة. |
توصيل قابل للتخصيص | عرض الميزات في Play يستخدم الإمكانات المتقدّمة لحِزم التطبيقات، ما يسمح لك بتقديم ميزات معيّنة في تطبيقك بشكل مشروط أو عند الطلب. |
لا يمكن تحقيق المزايا المذكورة أعلاه إلا باستخدام قاعدة رموز مقسّمة إلى وحدات. يمكن تحقيق المزايا التالية بأساليب أخرى، ولكن يمكن الاستفادة من التقسيم إلى وحدات لمساعدتك في فرض المزيد من الأساليب.
المزايا | ملخّص |
---|---|
سهولة التطوير | في قاعدة الرموز المقترنة بشدة، قد يؤدي إجراء تغيير واحد إلى حدوث سلسلة من التغييرات في أجزاء من الرموز تبدو غير مرتبطة ببعضها البعض. يجب أن تتبنّى المشاريع المفصَّلة بشكل صحيح مبدأ فصل المخاوف، وبالتالي الحد من الاقتران. ويتيح ذلك للمساهمين المزيد من الاستقلالية. |
الملكية | بالإضافة إلى تفعيل الاستقلالية، يمكن أيضًا استخدام الوحدات لفرض المساءلة. يمكن أن تكون الوحدة مالكًا مخصصًا مسؤولاً عن الحفاظ على الرمز وإصلاح الأخطاء وإضافة الاختبارات ومراجعة التغييرات. |
تغليف | تعني عملية التغليف أن كل جزء من الرمز يجب أن يحصل على أقل قدر ممكن من المعلومات بشأن الأجزاء الأخرى. تسهل قراءة الرموز المعزولة وفهمها. |
إمكانية إجراء الاختبارات | توضّح سهولة الاختبار مدى سهولة اختبار الرمز البرمجي. الرمز الذي يمكن اختباره هو رمز يمكن اختبار المكونات فيه بشكل منفرد بسهولة. |
وقت الإنشاء | ويمكن أن تستفيد بعض وظائف Gradle مثل التصميم التدريجي أو التخزين المؤقت أو الإصدار الموازي من النماذج إلى تحسين أداء الإصدار. |
الصعوبات الشائعة
إنّ دقة قاعدة الترميز هي النطاق الذي تتألف منه الوحدات. تشتمل قاعدة الرموز الأكثر دقة على المزيد من الوحدات الأصغر. عند تصميم قاعدة رموز نموذجية، يجب أن تحدد مستوى الدقة. لإجراء ذلك، ضع في الاعتبار حجم قاعدة الرموز البرمجية ومدى تعقيدها النسبي. لأنّ المبالغة في التفاصيل
في ما يلي بعض المشاكل الشائعة:
- دقة بالغة: كل وحدة تُضفي قدرًا معيّنًا من النفقات على شكل تعقيدات متزايدة في التصميم ورمز نموذجي. يؤدي استخدام بنية مركّبة إلى صعوبة الحفاظ على اتساق الإعدادات على مستوى الوحدات. وينتج عن استخدام عدد كبير جدًا من الرموز النموذجية قاعدة مشفّرة يصعب الاحتفاظ بها. وإذا كانت النفقات العامة تحسّن قابلية التوسّع، ننصحك بدمج بعض الوحدات.
- خشنة جدًا: في المقابل، إذا كانت وحداتك تنمو بشكل كبير جدًا، قد ينتهي بك الأمر إلى هدوء آخر وستفوتك المزايا التي توفرها هذه الوحدات. على سبيل المثال، في مشروع صغير، يُسمح بوضع طبقة البيانات داخل وحدة واحدة. ومع تزايد النمو، قد يكون من الضروري فصل المستودعات ومصادر البيانات إلى وحدات مستقلة.
- المعقد جدًا: ليس من المنطقي دائمًا تقسيم المشروع إلى وحدات. ويشكّل قاعدة الرموز حجمًا رئيسيًا. إذا كنت لا تتوقّع أن يتخطّى مشروعك حدًّا أدنى معيّنًا، لن تنطبق قابلية التوسّع وورم الوقت.
هل التقسيم هو الأسلوب المناسب لي؟
وإذا كنت بحاجة إلى مزايا إعادة الاستخدام أو التحكّم الصارم في مستوى الرؤية أو استخدام عرض الميزات في Play، يُعدّ تقسيم الوحدات أمرًا ضروريًا. إذا لم تكن تريد، ولكنك لا تزال تريد الاستفادة من قابلية التوسع أو الملكية أو التغليف أو أوقات الإنشاء، فإنّ إجراء التقسيم إلى وحدات أمر مفيد.
عيّنات
- الآن في نظام التشغيل Android: تطبيق Android كامل الوظائف يُقسّم إلى وحدات.
- نموذج بنية متعددة الوحدات