راهنمای ماژولارسازی اپلیکیشن اندروید، راهنمای ماژولارسازی اپلیکیشن اندروید

پروژه ای با چندین ماژول Gradle به عنوان پروژه چند ماژول شناخته می شود. این راهنما شامل بهترین شیوه ها و الگوهای توصیه شده برای توسعه برنامه های اندروید چند ماژول است.

مشکل رو به رشد پایگاه کد

در یک پایگاه کد در حال رشد، مقیاس پذیری، خوانایی و کیفیت کلی کد اغلب در طول زمان کاهش می یابد. این در نتیجه افزایش اندازه پایگاه کد بدون انجام اقدامات فعال برای اجرای ساختاری است که به راحتی قابل نگهداری است. مدولارسازی وسیله ای برای ساختاردهی پایگاه کد شما به گونه ای است که قابلیت نگهداری را بهبود می بخشد و به جلوگیری از این مشکلات کمک می کند.

ماژولارسازی چیست؟

ماژولارسازی روشی است برای سازماندهی یک پایگاه کد به بخش‌هایی که به صورت آزادانه جفت شده و دارای خود هستند. هر قسمت یک ماژول است. هر ماژول مستقل است و هدف مشخصی را دنبال می کند. با تقسیم یک مسئله به زیرمسئله های کوچکتر و آسان تر، پیچیدگی طراحی و نگهداری یک سیستم بزرگ را کاهش می دهید.

شکل 1 : نمودار وابستگی یک نمونه کد پایه چند ماژول

مزایای مدولارسازی

مزایای مدولارسازی بسیار زیاد است، اگرچه هر کدام بر بهبود قابلیت نگهداری و کیفیت کلی یک پایگاه کد متمرکز هستند. جدول زیر مزایای کلیدی را خلاصه می کند.

بهره مند شوند خلاصه
قابلیت استفاده مجدد ماژولارسازی فرصت هایی را برای به اشتراک گذاری کد و ساخت چندین برنامه از یک پایه فراهم می کند. ماژول ها به طور موثر بلوک های سازنده هستند. برنامه ها باید مجموع ویژگی های آنها باشند که در آن ویژگی ها به عنوان ماژول های جداگانه سازماندهی شده اند. عملکردی که یک ماژول خاص ارائه می دهد ممکن است در یک برنامه خاص فعال شود یا نباشد. برای مثال، یک :feature:news می‌تواند بخشی از برنامه طعم و لباس نسخه کامل باشد اما بخشی از طعم نسخه آزمایشی نباشد.
کنترل دقیق دید ماژول ها به شما این امکان را می دهند که به راحتی آنچه را که در معرض سایر قسمت های پایگاه کد خود قرار می دهید کنترل کنید. برای جلوگیری از استفاده در خارج از ماژول، می توانید همه چیز را غیر از رابط عمومی خود به عنوان internal یا private علامت گذاری کنید.
تحویل قابل تنظیم Play Feature Delivery از قابلیت‌های پیشرفته بسته‌های برنامه استفاده می‌کند و به شما این امکان را می‌دهد تا ویژگی‌های خاصی از برنامه خود را به صورت مشروط یا بر اساس تقاضا ارائه دهید.

مزایای فوق فقط با یک پایگاه کد مدولار شده قابل دستیابی است. مزایای زیر ممکن است با تکنیک های دیگر به دست آید، اما ماژولارسازی می تواند به شما کمک کند تا آنها را حتی بیشتر اعمال کنید.

بهره مند شوند خلاصه
مقیاس پذیری در یک پایگاه کد کاملاً جفت شده، یک تغییر واحد می تواند باعث ایجاد آبشاری از تغییرات در بخش های به ظاهر نامرتبط کد شود. یک پروژه به درستی مدولار شده، اصل تفکیک نگرانی ها را در بر می گیرد و بنابراین اتصال را محدود می کند. این به مشارکت کنندگان از طریق استقلال بیشتر قدرت می دهد.
مالکیت علاوه بر فعال کردن استقلال، ماژول ها همچنین می توانند برای اجرای مسئولیت پذیری استفاده شوند. یک ماژول می تواند یک مالک اختصاصی داشته باشد که مسئول حفظ کد، رفع اشکالات، افزودن تست ها و بررسی تغییرات است.
کپسولاسیون کپسوله سازی به این معنی است که هر قسمت از کد شما باید کمترین میزان دانش ممکن را در مورد سایر قسمت ها داشته باشد. خواندن و درک کد ایزوله آسان تر است.
آزمایش پذیری تست‌پذیری نشان می‌دهد که تست کد شما چقدر آسان است. یک کد قابل آزمایش، کدی است که در آن اجزا می‌توانند به راحتی به صورت مجزا آزمایش شوند.
ساخت زمان برخی از عملکردهای Gradle مانند ساخت افزایشی، ساخت حافظه پنهان یا ساخت موازی، می توانند از ماژولار بودن برای بهبود عملکرد ساخت استفاده کنند.

دام های رایج

دانه بندی پایگاه کد شما به میزانی است که از ماژول ها تشکیل شده است. یک کد پایه دانه دارتر دارای ماژول های بیشتر و کوچکتر است. هنگام طراحی یک پایگاه کد مدولار شده، باید در مورد سطح دانه بندی تصمیم بگیرید. برای انجام این کار، اندازه پایگاه کد و پیچیدگی نسبی آن را در نظر بگیرید. ریزدانه شدن بیش از حد باعث ایجاد بار سنگین می شود و درشت بودن بیش از حد مزایای مدولارسازی را کاهش می دهد.

برخی از مشکلات رایج به شرح زیر است:

  • خیلی ریزدانه : هر ماژول مقدار معینی سربار را به شکل افزایش پیچیدگی ساخت و کد دیگ بخار به ارمغان می آورد. یک پیکربندی ساخت پیچیده، ثابت نگه داشتن پیکربندی ها در ماژول ها را دشوار می کند. کد بیش از حد دیگ بخار باعث ایجاد یک پایگاه کد دست و پا گیر می شود که نگهداری آن دشوار است. اگر سربار با بهبود مقیاس پذیری مقابله می کند، باید برخی از ماژول ها را ادغام کنید.
  • خیلی درشت دانه : برعکس، اگر ماژول های شما بیش از حد بزرگ می شوند، ممکن است با یکپارچگی دیگر روبرو شوید و مزایای مدولار بودن را از دست بدهید. به عنوان مثال، در یک پروژه کوچک، قرار دادن لایه داده در داخل یک ماژول مشکلی ندارد. اما همانطور که رشد می کند، ممکن است لازم باشد که مخازن و منابع داده را به ماژول های مستقل جدا کنیم.
  • خیلی پیچیده : مدولار کردن پروژه همیشه منطقی نیست. یک عامل غالب، اندازه پایگاه کد است. اگر انتظار ندارید پروژه شما فراتر از یک آستانه مشخص رشد کند، مقیاس پذیری و افزایش زمان ساخت اعمال نخواهد شد.

آیا ماژولارسازی تکنیک مناسبی برای من است؟

اگر به مزایای استفاده مجدد، کنترل دقیق دید یا استفاده از Play Feature Delivery نیاز دارید، ماژولارسازی برای شما یک ضرورت است. اگر این کار را نمی‌کنید، اما همچنان می‌خواهید از مقیاس‌پذیری، مالکیت، کپسوله‌سازی یا زمان ساخت بهبودیافته بهره ببرید، ماژولارسازی چیزی است که ارزش توجه دارد.

نمونه ها

،

پروژه ای با چندین ماژول Gradle به عنوان پروژه چند ماژول شناخته می شود. این راهنما شامل بهترین شیوه ها و الگوهای توصیه شده برای توسعه برنامه های اندروید چند ماژول است.

مشکل رو به رشد پایگاه کد

در یک پایگاه کد در حال رشد، مقیاس پذیری، خوانایی و کیفیت کلی کد اغلب در طول زمان کاهش می یابد. این در نتیجه افزایش اندازه پایگاه کد بدون انجام اقدامات فعال برای اجرای ساختاری است که به راحتی قابل نگهداری است. مدولارسازی وسیله ای برای ساختاردهی پایگاه کد شما به گونه ای است که قابلیت نگهداری را بهبود می بخشد و به جلوگیری از این مشکلات کمک می کند.

ماژولارسازی چیست؟

ماژولارسازی روشی است برای سازماندهی یک پایگاه کد به بخش‌هایی که به صورت آزادانه جفت شده و دارای خود هستند. هر قسمت یک ماژول است. هر ماژول مستقل است و هدف مشخصی را دنبال می کند. با تقسیم یک مسئله به زیرمسئله های کوچکتر و آسان تر، پیچیدگی طراحی و نگهداری یک سیستم بزرگ را کاهش می دهید.

شکل 1 : نمودار وابستگی یک نمونه کد پایه چند ماژول

مزایای مدولارسازی

مزایای مدولارسازی بسیار زیاد است، اگرچه هر کدام بر بهبود قابلیت نگهداری و کیفیت کلی یک پایگاه کد متمرکز هستند. جدول زیر مزایای کلیدی را خلاصه می کند.

بهره مند شوند خلاصه
قابلیت استفاده مجدد ماژولارسازی فرصت هایی را برای به اشتراک گذاری کد و ساخت چندین برنامه از یک پایه فراهم می کند. ماژول ها به طور موثر بلوک های سازنده هستند. برنامه ها باید مجموع ویژگی های آنها باشند که در آن ویژگی ها به عنوان ماژول های جداگانه سازماندهی شده اند. عملکردی که یک ماژول خاص ارائه می دهد ممکن است در یک برنامه خاص فعال شود یا نباشد. برای مثال، یک :feature:news می‌تواند بخشی از برنامه طعم و لباس نسخه کامل باشد اما بخشی از طعم نسخه آزمایشی نباشد.
کنترل دقیق دید ماژول ها به شما این امکان را می دهند که به راحتی آنچه را که در معرض سایر قسمت های پایگاه کد خود قرار می دهید کنترل کنید. برای جلوگیری از استفاده در خارج از ماژول، می توانید همه چیز را غیر از رابط عمومی خود به عنوان internal یا private علامت گذاری کنید.
تحویل قابل تنظیم Play Feature Delivery از قابلیت‌های پیشرفته بسته‌های برنامه استفاده می‌کند و به شما این امکان را می‌دهد تا ویژگی‌های خاصی از برنامه خود را به صورت مشروط یا بر اساس تقاضا ارائه دهید.

مزایای فوق فقط با یک پایگاه کد مدولار شده قابل دستیابی است. مزایای زیر ممکن است با تکنیک های دیگر به دست آید، اما ماژولارسازی می تواند به شما کمک کند تا آنها را حتی بیشتر اعمال کنید.

بهره مند شوند خلاصه
مقیاس پذیری در یک پایگاه کد کاملاً جفت شده، یک تغییر واحد می تواند باعث ایجاد آبشاری از تغییرات در بخش های به ظاهر نامرتبط کد شود. یک پروژه به درستی مدولار شده، اصل تفکیک نگرانی ها را در بر می گیرد و بنابراین اتصال را محدود می کند. این به مشارکت کنندگان از طریق استقلال بیشتر قدرت می دهد.
مالکیت علاوه بر فعال کردن استقلال، ماژول ها همچنین می توانند برای اجرای مسئولیت پذیری استفاده شوند. یک ماژول می تواند یک مالک اختصاصی داشته باشد که مسئول حفظ کد، رفع اشکالات، افزودن تست ها و بررسی تغییرات است.
کپسولاسیون کپسوله سازی به این معنی است که هر قسمت از کد شما باید کمترین میزان دانش ممکن را در مورد سایر قسمت ها داشته باشد. خواندن و درک کد ایزوله آسان تر است.
آزمایش پذیری تست‌پذیری نشان می‌دهد که تست کد شما چقدر آسان است. یک کد قابل آزمایش، کدی است که در آن اجزا می‌توانند به راحتی به صورت مجزا آزمایش شوند.
ساخت زمان برخی از عملکردهای Gradle مانند ساخت افزایشی، ساخت حافظه پنهان یا ساخت موازی، می توانند از ماژولار بودن برای بهبود عملکرد ساخت استفاده کنند.

دام های رایج

دانه بندی پایگاه کد شما به میزانی است که از ماژول ها تشکیل شده است. یک کد پایه دانه دارتر دارای ماژول های بیشتر و کوچکتر است. هنگام طراحی یک پایگاه کد مدولار شده، باید در مورد سطح دانه بندی تصمیم بگیرید. برای انجام این کار، اندازه پایگاه کد و پیچیدگی نسبی آن را در نظر بگیرید. ریزدانه شدن بیش از حد باعث ایجاد بار سنگین می شود و درشت بودن بیش از حد مزایای مدولارسازی را کاهش می دهد.

برخی از مشکلات رایج به شرح زیر است:

  • خیلی ریزدانه : هر ماژول مقدار معینی سربار را به شکل افزایش پیچیدگی ساخت و کد دیگ بخار به ارمغان می آورد. یک پیکربندی ساخت پیچیده، ثابت نگه داشتن پیکربندی ها در ماژول ها را دشوار می کند. کد بیش از حد دیگ بخار باعث ایجاد یک پایگاه کد دست و پا گیر می شود که نگهداری آن دشوار است. اگر سربار با بهبود مقیاس پذیری مقابله می کند، باید برخی از ماژول ها را ادغام کنید.
  • خیلی درشت دانه : برعکس، اگر ماژول های شما بیش از حد بزرگ می شوند، ممکن است با یکپارچگی دیگر روبرو شوید و مزایای مدولار بودن را از دست بدهید. به عنوان مثال، در یک پروژه کوچک، قرار دادن لایه داده در داخل یک ماژول مشکلی ندارد. اما همانطور که رشد می کند، ممکن است لازم باشد که مخازن و منابع داده را به ماژول های مستقل جدا کنیم.
  • خیلی پیچیده : مدولار کردن پروژه همیشه منطقی نیست. یک عامل غالب، اندازه پایگاه کد است. اگر انتظار ندارید پروژه شما فراتر از یک آستانه مشخص رشد کند، مقیاس پذیری و افزایش زمان ساخت اعمال نخواهد شد.

آیا ماژولارسازی تکنیک مناسبی برای من است؟

اگر به مزایای استفاده مجدد، کنترل دقیق دید یا استفاده از Play Feature Delivery نیاز دارید، ماژولارسازی برای شما یک ضرورت است. اگر این کار را نمی‌کنید، اما همچنان می‌خواهید از مقیاس‌پذیری، مالکیت، کپسوله‌سازی یا زمان ساخت بهبودیافته بهره ببرید، ماژولارسازی چیزی است که ارزش توجه دارد.

نمونه ها