פרויקט עם כמה מודולים של Gradle נקרא פרויקט עם כמה מודולים. במדריך הזה מפורטות שיטות מומלצות ודפוסים מומלצים לפיתוח אפליקציות Android עם כמה מודולים.
הבעיה של בסיס הקוד ההולך וגדל
בקוד בסיס שממשיך לגדול, לעיתים קרובות יכולת ההתאמה לעומס, הקריאוּת ואיכות הקוד הכוללת יורדות עם הזמן. הסיבה לכך היא שהקוד מתרחב בלי שהמפתחים שלו נוקטים פעולות אקטיביות לאכיפת מבנה שקל לתחזק. מודולריזציה היא דרך לארגן את בסיס הקוד כך שיעזור לשפר את יכולת התחזוקה ויעזור למנוע את הבעיות האלה.
מהי מודולריזציה?
מודולריזציה היא תהליך של ארגון קוד בסיס לחלקים עצמאיים ומקושרים באופן רופף. כל חלק הוא מודול. כל מודול הוא עצמאי ומשמש למטרה ברורה. כשמחלקים בעיה לבעיות משנה קטנות יותר שקל יותר לפתור, אפשר לצמצם את המורכבות של תכנון ותחזוקה של מערכת גדולה.
![](https://developer.android.google.cn/static/topic/modularization/images/1_sample_dep_graph.png?authuser=1&hl=he)
היתרונות של מודולריות
יש הרבה יתרונות ליצירת מודולים, אבל כולם מתמקדים בשיפור יכולת התחזוקה והאיכות הכללית של קוד הבסיס. בטבלה הבאה מפורטים היתרונות העיקריים.
הטבות | סיכום |
---|---|
שימוש חוזר | מודולריות מאפשרת לכם לשתף קוד וליצור כמה אפליקציות מאותה תשתית. מודולים הם למעשה אבני בניין. אפליקציות צריכות להיות סכום של התכונות שלהן, כאשר התכונות מאורגנות כמודולים נפרדים. יכול להיות שהפונקציונליות שמספקת מודול מסוים תופעל באפליקציה מסוימת, ויכול להיות שלא. לדוגמה, :feature:news יכול להיות חלק מהגרסה המלאה של האפליקציה ל-Wear, אבל לא חלק מהגרסה הניסיונית. |
בקרה קפדנית על הרשאות הגישה | מודולים מאפשרים לכם לקבוע בקלות מה תחשפו לחלקים אחרים בקוד. אפשר לסמן את כל הרכיבים חוץ מהממשק הציבורי בתווית internal או private כדי למנוע שימוש בהם מחוץ למודול. |
משלוח בהתאמה אישית | Play Feature Delivery משתמש ביכולות המתקדמות של חבילות האפליקציות, ומאפשר לכם לספק תכונות מסוימות של האפליקציה שלכם באופן מותנה או על פי דרישה. |
אפשר ליהנות מהיתרונות שלמעלה רק באמצעות קוד בסיס מודולרי. אפשר להשיג את היתרונות הבאים באמצעות שיטות אחרות, אבל מודולריות יכולה לעזור לכם לאכוף אותם בצורה טובה יותר.
הטבות | סיכום |
---|---|
מדרגיות | בקוד בסביבה עם קישורים הדוקים, שינוי אחד יכול להוביל למחרוזת של שינויים בחלקים של הקוד שנראים לא קשורים. פרויקט שמחולק לממשקים מודולריים בצורה נכונה יתבסס על העיקרון של הפרדת הבעיות, ולכן יגביל את הקישור. כך התורמים מקבלים יותר עצמאות. |
בעלות | בנוסף לאפשרות להעניק אוטונומיה, אפשר להשתמש במודולים גם כדי לאכוף אחריות. לכל מודול יכול להיות בעלים ייעודי שאחראי על תחזוקת הקוד, תיקון באגים, הוספת בדיקות ובדיקת שינויים. |
אנקפסולציה | המשמעות של אנקפסולציה היא שלכל חלק בקוד צריך להיות הכי פחות ידע אפשרי על חלקים אחרים. קל יותר לקרוא ולעיין בקוד מבודד. |
יכולת בדיקה | היכולת לבדיקה היא מדד לקלות שבה אפשר לבדוק את הקוד. קוד שניתן לבדיקה הוא קוד שבו אפשר לבדוק בקלות את הרכיבים בנפרד. |
משך הזמן של תהליך ה-build | פונקציות מסוימות של Gradle, כמו build מצטבר, build במטמון או build מקביל, יכולות להשתמש במודולריות כדי לשפר את ביצועי ה-build. |
מלכודות נפוצות
רמת הפירוט של קוד הבסיס היא מידת הרכיבים שמרכיבים אותו. בקוד בסיס מפורט יותר יש יותר מודולים קטנים יותר. כשמעצבים בסיס קוד מודולרי, צריך להחליט על רמת הפירוט. כדי לעשות זאת, צריך להביא בחשבון את הגודל של קוד הבסיס ואת המורכבות היחסית שלו. אם תפרקו את הקוד לחלקים קטנים מדי, יתבצע ניצול יתר של משאבי המערכת, ואם תפרקו אותו לחלקים גדולים מדי, יהיה קשה יותר ליהנות מהיתרונות של מודולריות.
אלה כמה מהמלכודות הנפוצות:
- פירוט יתר: כל מודול גורם לחלק מסוים מעלויות הניהול, בצורה של מורכבות מוגברת של ה-build וקוד תבנית. הגדרות build מורכבות מקשות על שמירה על עקביות בהגדרות במודולים שונים. שימוש רב מדי בקוד סטנדרטי גורם ליצירת קוד בסיס מסורבל שקשה לתחזק. אם העלויות הנלוות משפיעות לרעה על השיפורים ביכולת ההתאמה לעומס, כדאי לשקול לאחד כמה מודולים.
- גרעין מורכב מדי: לעומת זאת, אם המודולים גדלים מדי, יכול להיות שתקבלו מונוליט נוסף ותפספסו את היתרונות של מודולריות. לדוגמה, בפרויקט קטן אפשר להציב את שכבת הנתונים בתוך מודול יחיד. אבל ככל שהפרויקט יתפתח, יכול להיות שתצטרכו להפריד בין המאגרים ומקורות הנתונים למודולים עצמאיים.
- מורכב מדי: לא תמיד הגיוני לפצל את הפרויקט למודולים. גורם דומיננטי הוא גודל קוד הבסיס. אם אתם לא מצפים שהפרויקט יגדל מעבר לסף מסוים, לא תיהנו מהיתרונות של יכולת ההתאמה לעומס ומהיתרונות של קיצור זמני ה-build.
האם מודולריזציה היא השיטה המתאימה לי?
אם אתם זקוקים ליתרונות של שימוש חוזר, לבקרת חשיפה קפדנית או לשימוש ב-Play Feature Delivery, מודולריזציה היא חובה. אם לא, אבל אתם עדיין רוצים ליהנות משיפורים ביכולת ההתאמה לעומס, בבעלות, באנקפסולציה או בזמני ה-build, כדאי לכם לשקול שימוש במודולים.
דוגמיות
- עכשיו ב-Android – אפליקציה פונקציונלית לחלוטין ל-Android עם מודולריות.
- דוגמה לארכיטקטורה עם כמה מודולים