מאמר זה בבלוג עוסק בהבנה מעמיקה של מושג הריפקטורינג בתוכנה. הוא מסביר מהו ריפקטורינג, מדוע הוא חשוב ומציג את המונחים הבסיסיים הקשורים אליו. המאמר מתייחס לשיטות ריפקטורינג שונות ומגדיר מה הם ריחות קוד שמעידים על הצורך בריפקטורינג. הוא מדגיש טעויות נפוצות בתהליך הריפקטורינג ומספק המלצות על שיטות עבודה מומלצות. בנוסף, המאמר מציג כלים שיכולים לשפר את תהליכי הפיתוח והניהול פרויקטים. בסיכום, המאמר מדגיש כיצד ניתן לשפר את איכות התוכנה באמצעות ריפקטורינג.
מהו ריפקטורינג ולמה הוא חשוב?
ריפקטורינג בתוכנה הוא תהליך שמטרתו לשפר את מבנה הקוד מבלי לשנות את התנהגותו. המטרה היא להפוך את הקוד ליותר קריא, ברור וניתן לתחזוקה. תהליך זה מפחית את החוב הטכני שמפתחי תוכנה נתקלים בו ומבנה בסיס יציב לפיתוחים עתידיים. חשוב להבחין כי ריפקטורינג אינו אותו דבר כמו הוספת תכונות חדשות או תיקון באגים; הפוקוס כאן הוא על שיפור המבנה הפנימי של הקוד.
המטרה הבסיסית של ריפקטורינג היא להפחית את המורכבות של הקוד ולהגביר את המודולריות שלו. כך, התלות בין חלקי הקוד השונים פוחתת והשינויים נעשים קלים יותר. קוד שעבר ריפקטורינג בצורה טובה מזרז את הוספת תכונות חדשות, מקל על איתור באגים ומפחית את עלויות התחזוקה הכללית של התוכנה.
| מאפיין | לפני ריפקטורינג | אחרי ריפקטורינג |
|---|---|---|
| מורכבות קוד | גבוהה | נמוכה |
| קריאות | קשה | קלה |
| נגישות לתחזוקה | נמוכה | גבוהה |
| מהירות שינוי | איטית | מהירה |
אחת הנקודות החשובות שיש לשים לב אליהן בעת ריפקטורינג היא לא לשנות את ההתנהגות של הקוד. לכן, תהליכי ריפקטורינג צריכים להיעשות בצעדים קטנים ולתמוך בבדיקות מתמשכות. לאחר כל שלב ריפקטורינג, יש להריץ בדיקות יחידה או בדיקות אינטגרציה כדי לוודא שהקוד פועל כראוי.
יתרונות הריפקטורינג
- מגביר את קריאות הקוד.
- מפשט את הבנת הקוד.
- מאיץ את תהליך איתור הבאגים.
- מפשט את הוספת תכונות חדשות.
- מקטין את עלויות התחזוקה של התוכנה.
- משפר את שיתוף הפעולה בין חברי הצוות.
ריפקטורינג בתוכנה הוא חיוני להצלחת פרויקטים בתוכנה. ביצוע ריפקטורינג באופן מתמיד משפר את איכות התוכנה, מאיץ את תהליך הפיתוח ומפחית את העלויות בטווח הארוך. לכן, חשוב שמפתחים ילמדו ויישמו טכניקות ריפקטורינג, מה שיתרום רבות להתפתחותם המקצועית.
מונחים בסיסיים קשורים לריפקטורינג
ריפקטורינג בתוכנה הוא תהליך שמטרתו לשפר את מבנה הקוד מבלי לשנות את התנהגותו. תהליך זה שואף לשפר את קריאות הקוד, את הבנתו ואת נגישותו. המטרה הבסיסית היא לשמור על האינטראקציה של התוכנה עם העולם החיצוני תוך הפחתת המורכבות הפנימית שלה. ריפקטורינג טוב מאפשר למפתחים לשנות את הקוד בקלות ולהוסיף תכונות חדשות.
תהליך הריפקטורינג מתבצע בדרך כלל בצעדים קטנים. בכל שלב, יש להריץ בדיקות קוד כדי לוודא שאין בעיות. זה קשור קשר הדוק לתהליכי אינטגרציה מתמשכים ובדיקות אוטומטיות. צעדים קטנים מקלים על זיהוי בעיות ומגדילים את מהימנות תהליך הריפקטורינג. בנוסף, בסוף כל שלב צריך לוודא שהקוד פועל, כך שתהליך הפיתוח לא יופרע.
- אנליזה: בחינת הקוד הקיים וזיהוי אזורי שיפור.
- תכנון: קביעת צעדי הריפקטורינג וסדר עדיפויות.
- כתיבת בדיקות: כתיבת בדיקות כדי להבטיח שההתנהגות נשמרת.
- צעדים קטנים: יישום הריפקטורינג בצעדים קטנים.
- בדיקה: הרצת בדיקות לאחר כל שלב ותיקון בעיות.
- אינטגרציה: אינטגרציה של השינויים לקוד הבסיסי.
ריפקטורינג הוא חלק בלתי נפרד מתהליך הפיתוח ויש לבצע אותו באופן קבוע. במיוחד בפרויקטים גדולים ומורכבים, ריפקטורינג סדיר מונע מהקוד להידרדר עם הזמן ומונע הצטברות חוב טכני. כך, אורך חיי התוכנה מתארך ועלויות הפיתוח מצטמצמות.
נקודה חשובה במהלך תהליך הריפקטורינג היא שהשינויים צריכים להיות מאומתים באמצעות בדיקות. הבדיקות מבטיחות שההתנהגות של הקוד לא השתנתה ומאפשרות לבצע ריפקטורינג בצורה בטוחה. בנוסף, חשוב לשפר את קריאות הקוד ולמנוע מורכבות מיותרת. זה עוזר למפתחים אחרים להבין ולשנות את הקוד בקלות רבה יותר.
סוגי ריפקטורינג: אילו שיטות קיימות?
ריפקטורינג בתוכנה הוא תהליך שמטרתו לשפר את מבנה הקוד מבלי לשנות את התנהגותו. תהליך זה מביא לכך שהקוד יהיה קריא, ברור וניתן לתחזוקה. הריפקטורינג הוא חלק חשוב ממחזור חיי הפיתוח ויש ליישמו באופן קבוע. שיטות ריפקטורינג שונות נועדו לפתור בעיות שונות ולשפר את איכות הקוד. בפרק זה נסקור את שיטות הריפקטורינג הנפוצות ודוגמאות ליישום שלהן.
| שיטת ריפקטורינג | תיאור | מטרה |
|---|---|---|
| שיטת הוצאת מתודה (Extract Method) | חלק ארוך של מתודה מחולק לחלקים קטנים ומנוהלים יותר. | מגביר את הקריאות, מפחית חזרתיות. |
| שיטת הוצאת משתנה (Inline Variable) | משתנה המוקצה לביטוי פשוט משומש ישירות באותו ביטוי. | מונע משתנים מיותרים. |
| שיטת החלפת מתודה במתודת אובייקט (Replace Method with Method Object) | מתודה ארוכה ומורכבת מוחלפת באובייקט מתודה. | מחלקת המתודה לחלקים קטנים יותר וקלים לבדיקה. |
| שיטת החלפת ערך נתון באובייקט (Replace Data Value with Object) | ערך נתון פשוט (כגון מחרוזת או מספר) מוחלף באובייקט. | הוספת התנהגות סביב הנתונים. |
תהליך הריפקטורינג מתבצע בדרך כלל בצעדים קטנים, ובסוף כל שלב מבוצעות בדיקות כדי לוודא שהקוד פועל כראוי. זה מבטיח שהריפקטורינג יהיה בטוח ויעיל. בחירת טכניקות ריפקטורינג נכונות תלויה בצרכים הספציפיים של הפרויקט ובבעיות הקוד שנמצאות. אסטרטגיית ריפקטורינג טובה היא קריטית להצלחה בטווח הארוך של התוכנה.
טכניקות ריפקטורינג
טכניקות ריפקטורינג הן שיטות שונות שמשמשות לשיפור מבנה הקוד. טכניקות אלו מיועדות להגדיל את קריאות הקוד, להפחית מורכבות ולפשט שינויים עתידיים. חלק מטכניקות הריפקטורינג כוללות שינויים קטנים ופשוטים, בעוד אחרות עשויות להיות יותר מקיפות ומורכבות.
שיטות ריפקטורינג פופולריות
- שיטת הוצאת מתודה (Extract Method)
- שיטת הוצאת מחלקה (Extract Class)
- שיטת שינוי שם מתודה (Rename Method)
- שיטת קפסולציה של שדות (Encapsulate Field)
- שיטת החלפת ביטוי מותנה בפולימורפיזם (Replace Conditional with Polymorphism)
- שיטת החלפת לולאה ב-Pipeline (Replace Loop with Pipeline)
שיטות נפוצות
שיטות ריפקטורינג נפוצות משמשות בדרך כלל לפתרון בעיות שמופיעות לעיתים קרובות בקוד. לדוגמה, שיטת הוצאת מתודה אידיאלית עבור מתודות ארוכות ומורכבות שצריך לחלק לחלקים קטנים יותר. שיטת הוצאת מחלקה משמשת במקרים שבהם מחלקה נושאת על עצמה יותר מדי אחריות.
ריפקטורינג הוא תהליך של שיפור עיצוב הקוד. זה מגביר את הקריאות, מקל על התחזוקה ומפחית את הסיכון בהוספת תכונות חדשות. – מרטין פאולר
דוגמאות ליישום
דוגמאות בעולם האמיתי של ריפקטורינג חשובות כדי להמיר מידע תיאורטי לפעולה. לדוגמה, באפליקציית מסחר אלקטרוני, מתודת עיבוד הזמנות עשויה להיות ארוכה ומורכבת. ניתן לחלק את המתודה לחלקים קטנים יותר באמצעות טכניקת הוצאת מתודה, כך שכל חלק יוכל להיבדק ותחזוקתו תהיה קלה יותר. דוגמה נוספת היא כאשר מחלקה נושאת על עצמה יותר מדי אחריות, ניתן לחלק אותה למחלקות קטנות וממוקדות יותר בעזרת טכניקת הוצאת מחלקה. זה מביא לכך שהקוד יהיה יותר מודולרי וגמיש.
חשוב לציין כי ריפקטורינג הוא תהליך מתמשך וניתן ליישם אותו בכל שלב של הפרויקט. ריפקטורינג סדיר משפר את איכות הקוד, מפחית באגים ומאיץ את תהליך הפיתוח.
ריחות קוד: מצבים שדורשים ריפקטורינג
בתהליך פיתוח תוכנה, קשה להימנע מהמורכבות ההולכת ומתרקמת של הקוד לאורך זמן. מצב זה עלול להוביל להופעת תבניות מסוימות המכונות ריחות קוד, שמעידות על הצורך בריפקטורינג. ריחות קוד הם בעיות הפוגעות ביכולת של התוכנה להיות בת קיימא וביכולת לפתח אותה. לכן, הכרה והסרה של ריחות קוד היא חלק חשוב מהתהליך של יצירת תוכנה איכותית וחזקה.
ריחות קוד בדרך כלל מצביעים על שגיאות בעיצוב, על שיטות תכנות רעות או על קודים ישנים שאינם מתאימים לדרישות המשתנות עם הזמן. בעיות אלו, אף שלא תמיד יוצרות בעיות גדולות בפני עצמן, עלולות להקשות על הבנת הקוד ושינויים בו, ולהוביל לטעויות ולחידוש תהליך הפיתוח. לכן, זיהוי מוקדם של ריחות קוד והסרתם באמצעות טכניקות ריפקטורינג מתאימות היא קריטית להצלחת פרויקטים בתוכנה.
ריחות קוד עיקריים
- מתודות ארוכות (Long Methods): מתודות עם יותר מדי אחריות וקשה להבין.
- מחלקות גדולות (Large Classes): מחלקות עם יותר מדי תכונות ומתודות, קשה להבין ולנהל.
- קוד חוזר (Duplicated Code): קטעי קוד זהים המופיעים במקומות שונים, מקשים על ביצוע שינויים.
- רשימות פרמטרים ארוכות (Long Parameter Lists): העברת יותר מדי פרמטרים למתודה, מפחיתה את הקריאות עלולה להוביל לטעויות.
- קוד מת (Dead Code): קטעי קוד שאף פעם לא מופעלים, תופסים מקום מיותר ומקשים על הבנת הקוד.
- שורות הערות (Comments): שימוש יתר בשורות הערות עלול להקשות על הבנת הקוד ולעיתים גם לא להיות עדכני.
בבטבלה הבאה ניתן לראות דוגמאות לריחות קוד נפוצים ולטכניקות ריפקטורינג שיכולות לסייע בהסרתם. טכניקות אלו מסייעות להפוך את הקוד לנקי, מובן וניתן לתחזוקה.
| ריח קוד | תיאור | טכניקת ריפקטורינג |
|---|---|---|
| מתודות ארוכות | מתודה ארוכה מאוד הכוללת יותר מדי אחריות. | הוצאת מתודה (Extract Method), יצירת מתודת אובייקט (Replace Method with Method Object) |
| קוד חוזר | קטעי קוד זהים המופיעים במקומות שונים. | הוצאת מתודה (Extract Method), יצירת מתודת תבנית (Form Template Method) |
| מחלקות גדולות | מחלקה הכוללת יותר מדי תכונות ומתודות. | הוצאת מחלקה (Extract Class), יצירת ממשק (Extract Interface) |
| רשימות פרמטרים ארוכות | העברת יותר מדי פרמטרים למתודה. | הכנסת אובייקט פרמטר (Introduce Parameter Object), שילוב מתודות (Preserve Whole Object) |
זיהוי ריחות קוד וביצוע ריפקטורינג הם תהליכים מתמשכים. יש לבצע ביקורות קוד באופן קבוע, להשתמש בכלי ניתוח אוטומטיים ולשים לב לעקרונות קוד נקי מתחילת תהליך הפיתוח כדי למנוע את היווצרות ריחות הקוד. חשוב לזכור כי מאגר קוד נקי ומסודר הוא הבסיס להצלחת פרויקטים בתוכנה.
ריחות קוד מצביעים על מצבים הדורשים ריפקטורינג והכרתם והסרתם היא קריטית לשיפור האיכות והקיימות של התוכנה. באמצעות טכניקות ריפקטורינג נכונות, ניתן להפוך קודים מורכבים וקשים להבנה לפשוטים, ברורים וקלות לניהול.
טעויות שכיחות בריפקטורינג
ריפקטורינג בתוכנה הוא תהליך חשוב שמטרתו לשפר את התנהגות הקוד מבלי לשנות את מבנהו. עם זאת, אם לא נזהרים במהלך תהליך זה, עלולות להתעורר טעויות חמורות. טעויות אלו עלולות לפגוע ביציבות התוכנה, לגרום להופעת באגים חדשים ולהאט את תהליך הפיתוח. לכן יש לשים לב למספר נקודות חשובות במהלך הריפקטורינג.
| סוג טעות | תיאור | תוצאות אפשריות |
|---|---|---|
| חוסר בבדיקות | לא נעשות בדיקות מספיקות לפני או אחרי הריפקטורינג. | בעיות בלתי צפויות, קריסת האפליקציה. |
| צעדים גדולים | ביצוע שינויים גדולים מאוד בבת אחת. | קושי באיתור בעיות, הקוד נעשה לא ברור. |
| תכנון לא מספק | חוסר תכנון טוב של תהליך הריפקטורינג והיעדים לא ברורים. | בזבוז משאבים, כישלון של הפרויקט. |
| חוסר הבנה של הקוד | אי הבנה מוחלטת של הקוד שעליו מתבצע ריפקטורינג. | שינויים שגויים, פגיעה בפונקציונליות הקיימת. |
כדי למנוע טעויות בתהליך הריפקטורינג, ניתן לנקוט בכמה צעדים חשובים. ראשית, יש ליצור חבילת בדיקות כוללנית לפני הריפקטורינג בהתאם לעקרונות פיתוח מונחה בדיקות (TDD). הבדיקות הללו מבטיחות שהשינויים לא ישפיעו על הפונקציונליות הקיימת. בנוסף, יש לבצע שינויים קטנים ולא להוציא לפועל שינויים גדולים בבת אחת. בכל שלב יש להריץ בדיקות כדי לאתר בעיות מוקדם.
טעויות שיש להימנע מהן
- להתחיל ריפקטורינג מבלי לכתוב בדיקות מספקות.
- לעשות שינויים גדולים מאוד בבת אחת.
- לשנות את הקוד מבלי להבין מה הוא עושה.
- לא לבטל את צעדי הריפקטורינג או לא להשתמש במערכת לניהול גרסאות.
- לא לתקשר עם מפתחים אחרים ולא לשתף פעולה.
נקודה נוספת שחשוב לשים לב אליה היא הבנת הקוד שעליו מתבצע ריפקטורינג. אם מורכבות הקוד גבוהה, ניתן להשתמש בטכניקות ריפקטורינג פשוטות כדי לשפר את קריאות הקוד. לדוגמה, ניתן לחלק מתודות ארוכות לחלקים קטנים ומשמעותיים יותר, ולשדרג את שמות המשתנים לשמות ברורים יותר. בנוסף, במהלך תהליך הריפקטורינג, שיתוף פעולה עם מפתחים אחרים והחלפת רעיונות יכולים לסייע בזיהוי בעיות ולמצוא פתרונות טובים יותר.
חשוב שהשינויים בתהליך הריפקטורינג יהיו ניתנים לביטול. לכן, יש להשתמש במערכות ניהול גרסאות (כגון Git) ולשמור כל צעד ריפקטורינג כהתחייבות נפרדת. כך, במקרה של בעיה, ניתן בקלות לחזור לגרסה קודמת ולתקן טעויות. חשוב לזכור כי תהליך ריפקטורינג מוצלח דורש תכנון זהיר, בדיקות מתמשכות ושיתוף פעולה.
שיטות עבודה מומלצות לריפקטורינג

ריפקטורינג בתוכנה הוא תהליך המיועד לשיפור מבנה הקוד מבלי לשנות את התנהגותו. תהליך זה מאפשר לקוד להיות קריא, ברור וניתן לתחזוקה. עם זאת, כדי שהריפקטורינג יהיה מוצלח יש להקפיד על שיטות עבודה מסוימות. אחרת, הקוד עלול להפוך ליותר מורכב או לגרום לבעיות.
לפני שמתחילים בתהליך הריפקטורינג, יש להבין את הקוד הקיים בצורה מעמיקה ולוודא שיש בדיקות שמגנות עליו. בדיקות מקיפות הן קריטיות להבטחת שהתהליכים המבוצעים לא ישפיעו על הפונקציונליות הקיימת. בדיקות אלו יכולות להיות בדיקות יחידה, בדיקות אינטגרציה ובדיקות מערכת. ללא הבטחת בדיקות, ריפקטורינג יכול להוביל לתוצאות בלתי צפויות ולטעויות יקרות.
| שיטה מומלצת | תיאור | יתרונות |
|---|---|---|
| צעדים קטנים | חלקו את תהליכי הריפקטורינג לצעדים קטנים ומנוהלים. | מקטין את הסיכון לטעויות, מקל על מעקב אחר שינויים. |
| בדיקות מתמשכות | הריצו בדיקות לאחר כל שלב ריפקטורינג. | מאפשר זיהוי בעיות מוקדם, מבטיח ריפקטורינג בטוח. |
| ביקורת קוד | אשרו את הקוד לאחר תהליך הריפקטורינג על ידי מפתחים אחרים. | מגביר את איכות הקוד, חושף בעיות פוטנציאליות. |
| ניהול גרסאות | נהל את תהליך הריפקטורינג באמצעות מערכת לניהול גרסאות. | מאפשר חזרה קלה על שינויים, מקל על שיתוף פעולה. |
נקודה נוספת שחשוב להקפיד עליה במהלך הריפקטורינג היא לבצע ריפקטורינג ממוקד מטרה. כל שלב בריפקטורינג צריך להיות ממוקד במטרה מסוימת, כגון שיפור הקריאות, הפחתת מורכבות או שיפור ביצועים. ריפקטורינג ללא תכנון או מטרה עשוי להיות לא מועיל ואפילו מזיק. לכן, יש לבנות תכנית לפני הריפקטורינג ולהישאר נאמן לה.
טיפים לריפקטורינג
- ראשית, כתבו בדיקות לקוד הקיים וודאו שהן פועלות כראוי.
- התקדמו בצעדים קטנים ומשמעותיים. בדקו את השינויים בכל שלב.
- שיתוף פעולה עם אחרים ולקיחת משוב באופן קבוע על הקוד.
- שימוש במערכות ניהול גרסאות כדי לעקוב אחר השינויים.
- הפכו לוגיקה מורכבת לפשוטה וברורה יותר.
- ניקוי קודים מיותרים או חוזרים.
תהליך הריפקטורינג צריך להתבצע כמעגל שיפור מתמשך. ריפקטורינג הוא לא פעולה חד-פעמית, אלא תהליך מתמשך. מאגר הקוד משתנה ומשתפר כל הזמן, ולכן הריפקטורינג צריך להתאים לשינויים אלו. זה מבטיח שהקוד יישאר עדכני, קריא וניתן לתחזוקה. ריפקטורינג מתמשך הוא אחד המפתחות להצלחת פרויקטים בתוכנה.
כלים לריפקטורינג: אילו כלים יש להשתמש?
ריפקטורינג בתוכנה הוא תהליך שבו השימוש בכלים הנכונים הוא המפתח להגברת היעילות ולהקטנת טעויות. בשוק קיימים מספר כלים לריפקטורינג, וכל אחד מהם מציע יתרונות וחסרונות שונים. כלים אלו מסייעים למפתחים לנתח קוד, לזהות בעיות פוטנציאליות, לבצע ריפקטורינג אוטומטי ולשפר את איכות הקוד הכללית. בחירת הכלי המתאים תלויה בגודל הפרויקט, בשפת התכנות שבה משתמשים, בסביבת הפיתוח ובניסיון הצוות.
כלי ריפקטורינג חוסכים זמן על ידי אוטומציה של תהליכים רבים שמפתחים צריכים לבצע באופן ידני. לדוגמה, שינוי שם של משתנה, העברת מתודה למחלקה אחרת או פשטת תנאי מורכב יכולים להתבצע באמצעות מספר קליקים בעזרת כלים אלו. בנוסף, כלים אלו עוזרים לשמור על עקביות הקוד ומונעים טעויות. חשוב לזכור, עם זאת, שהריפקטורינג האוטומטי לא תמיד נותן תוצאות נכונות. לכן, יש לבחון ולבדוק את השינויים שנעשו בזהירות.
| שם הכלי | שפות נתמכות | תכונות |
|---|---|---|
| JetBrains IntelliJ IDEA | Java, Kotlin, Scala, Groovy | אנליזה מתקדמת של קוד, ריפקטורינג אוטומטי, השלמת קוד |
| Eclipse | Java, C++, Python, PHP | ניתן להרחבה באמצעות תוספים, ריפקטורינג אוטומטי, עיצוב קוד |
| Visual Studio | C#, VB.NET, C++ | סביבת פיתוח משולבת, ריפקטורינג אוטומטי, ניפוי שגיאות |
| Resharper | C#, VB.NET | אנליזה מתקדמת של קוד, תיקונים מהירים, ריפקטורינג אוטומטי |
בעת בחירת כלי לריפקטורינג, יש לקחת בחשבון את השפות הנתמכות, יכולות האינטגרציה, קלות השימוש והעלות. כמו כן, יש להעריך אם התכונות שהכלי מציע מתאימות לצרכים של הפרויקט. לדוגמה, בפרויקט גדול ומורכב, כלי עם אנליזות קוד מתקדמות ותכונות ריפקטורינג אוטומטיות עשויים להיות מועילים יותר מאשר שימוש בעורך קוד פשוט בפרויקט קטן. בחירת הכלי הנכון היא קריטית להצלחת תהליך הריפקטורינג.
חשוב לזכור שכלי ריפקטורינג הם רק אמצעי עזר. ריפקטורינג הוא תהליך של שיפור העיצוב והארכיטקטורה, ודורש חשיבה אנושית וניסיון. הכלים מקלים ומזרזים את התהליך, אך ההחלטות הסופיות תמיד נמצאות באחריות המפתחים. לכן, בעת שימוש בכלי ריפקטורינג, חשוב להבין את הלוגיקה והמטרה של הקוד, להעריך את השפעת השינויים ולוודא את נכונותם באמצעות בדיקות.
כלי ריפקטורינג פופולריים
- JetBrains IntelliJ IDEA
- Eclipse IDE
- Microsoft Visual Studio
- Resharper
- NetBeans
- PyCharm
תהליכי פיתוח לריפקטורינג
ריפקטורינג בתוכנה הוא תהליך המיועד לשיפור מבנה הקוד מבלי לשנות את התנהגותו. תהליך זה הוא חלק בלתי נפרד ממחזור חיי הפיתוח, והוא שואף ליצור מאגר קוד בר קיימא, קריא וקל להרחבה. תהליך ריפקטור