מדריך ליצירת מודולים באפליקציות ל-Android

פרויקט עם כמה מודולים של Gradle נקרא פרויקט מרובה מודולים. המדריך הזה כולל שיטות מומלצות ודפוסים מומלצים לפיתוח אפליקציות Android מרובות מודולים.

הבעיה של בסיס קוד הולך וגדל

בבסיס קוד שהולך וגדל, יכולת ההרחבה, הקריאות ואיכות הקוד הכוללת לרוב יורדות עם הזמן. הסיבה לכך היא שגודל בסיס הקוד גדל, אבל המפתחים לא נקטו אמצעים פעילים כדי לאכוף מבנה שקל לתחזק. מודולריזציה היא דרך לבנות את בסיס הקוד כך שיהיה קל יותר לתחזק אותו ולמנוע את הבעיות האלה.

מהי מודולריות?

מודולריזציה היא שיטה לארגון בסיס קוד לחלקים עצמאיים עם צימוד רופף. כל חלק הוא מודול. כל מודול הוא עצמאי ומיועד למטרה ברורה. כשמחלקים בעיה לבעיות משנה קטנות יותר וקלות יותר לפתרון, אפשר לצמצם את המורכבות של תכנון מערכת גדולה ותחזוקה שלה.

תרשים 1: גרף תלות של בסיס קוד לדוגמה עם כמה מודולים

היתרונות של מודולריזציה

יש הרבה יתרונות למודולריזציה, אבל כולם מתמקדים בשיפור התחזוקה והאיכות הכוללת של בסיס קוד. בטבלה הבאה מפורטים היתרונות העיקריים.

הטבות סיכום
שימוש חוזר מודולריזציה מאפשרת לשתף קוד ולבנות כמה אפליקציות על בסיס אותה תשתית. מודולים הם למעשה אבני בניין. האפליקציות צריכות להיות סכום התכונות שלהן, כשהתכונות מאורגנות כמודולים נפרדים. יכול להיות שפונקציונליות מסוימת שמספק מודול מסוים תופעל באפליקציה מסוימת, ויכול להיות שלא. לדוגמה, :feature:news יכול להיות חלק מהגרסה המלאה של האפליקציה ל-Wear, אבל לא חלק מגרסת ההדגמה.
שליטה קפדנית בהרשאות הגישה מודולים מאפשרים לכם לשלוט בקלות במה שאתם חושפים לחלקים אחרים ב-codebase. כדי למנוע שימוש בכל מה שאינו הממשק הציבורי מחוץ למודול, אפשר לסמן את כל השאר כ-internal או כ-private.
משלוח בהתאמה אישית Play Feature Delivery משתמשת ביכולות המתקדמות של חבילות אפליקציות, ומאפשרת לכם לספק תכונות מסוימות של האפליקציה בתנאי או לפי דרישה.

אפשר ליהנות מהיתרונות של מודולריזציה רק אם בסיס הקוד מודולרי. אפשר להשיג את היתרונות הבאים גם בטכניקות אחרות, אבל מודולריזציה יכולה לעזור לכם ליישם אותם בצורה טובה יותר.

הטבות סיכום
מדרגיות בבסיס קוד עם צימוד הדוק, שינוי יחיד יכול להפעיל שרשרת של שינויים בחלקים של הקוד שנראים לא קשורים. פרויקט עם מודולריות נכונה יתבסס על העיקרון של הפרדת דאגות, ולכן יגביל את הצימוד. כך המשתתפים מקבלים יותר אוטונומיה.
בעלות בנוסף להפעלת אוטונומיה, אפשר להשתמש במודולים גם כדי לאכוף אחריות. לכל מודול יכול להיות בעלים ייעודי שאחראי על תחזוקת הקוד, תיקון באגים, הוספת בדיקות ובדיקת שינויים.
אנקפסולציה המשמעות של הכמסה היא שלכל חלק בקוד צריך להיות מינימום ידע על חלקים אחרים. קל יותר לקרוא ולהבין קוד מבודד.
יכולת בדיקה המונח 'יכולת בדיקה' מתאר עד כמה קל לבחון את הקוד. בסיס קוד שאפשר לבדוק הוא כזה שאפשר לבדוק את הרכיבים שלו בקלות בבידוד.
Build time חלק מהפונקציות של Gradle, כמו בנייה מצטברת, מטמון בנייה או בנייה מקבילה, יכולות להשתמש במודולריות כדי לשפר את ביצועי הבנייה.

טעויות נפוצות

הגרנולריות של בסיס הקוד היא המידה שבה הוא מורכב ממודולים. בבסיס קוד עם רמת פירוט גבוהה יותר יש יותר מודולים קטנים יותר. כשמעצבים בסיס קוד מודולרי, צריך להחליט על רמת הפירוט. כדי לעשות את זה, צריך לקחת בחשבון את הגודל של בסיס הקוד ואת רמת המורכבות היחסית שלו. חלוקה ליחידות קטנות מדי תגרום לעומס יתר, וחלוקה ליחידות גדולות מדי תפחית את היתרונות של המודולריזציה.

אלה כמה מהטעויות הנפוצות:

  • גרנולריות גבוהה מדי: כל מודול מוסיף עומס מסוים בצורה של מורכבות גבוהה יותר של הבנייה וקוד boilerplate. הגדרות מורכבות של build מקשות על שמירה על עקביות ההגדרות בין המודולים. יותר מדי קוד סטנדרטי יוצר בסיס קוד מסורבל שקשה לתחזק. אם התקורה מבטלת את השיפורים בסקיילביליות, כדאי לשקול לאחד כמה מודולים.
  • גרנולריות גסה מדי: מצד שני, אם המודולים גדלים יותר מדי, יכול להיות שתקבלו עוד מונוליט ותפספסו את היתרונות של המודולריות. לדוגמה, בפרויקט קטן אפשר להציב את שכבת הנתונים בתוך מודול יחיד. אבל כשהוא גדל, יכול להיות שיהיה צורך להפריד בין מאגרי המידע ומקורות הנתונים למודולים עצמאיים.
  • מורכב מדי: לא תמיד כדאי להפוך את הפרויקט למודולרי. אחד הגורמים המשפיעים ביותר הוא גודל בסיס הקוד. אם אתם לא צופים שהפרויקט יגדל מעבר לסף מסוים, היתרונות של יכולת ההתאמה והזמן שנדרש לבנייה לא יחולו.

האם מודולריזציה היא השיטה הנכונה בשבילי?

אם אתם רוצים ליהנות מהיתרונות של שימוש חוזר, שליטה קפדנית בחשיפה או שימוש ב-Play Feature Delivery, מודולריזציה היא חובה בשבילכם. אם לא, אבל אתם עדיין רוצים ליהנות משיפורים במדרגיות, בבעלות, באנקפסולציה או בזמני בנייה, כדאי לשקול מודולריזציה.

טעימות