לדלג לתוכן

Refactoring

מתוך ויקיפדיה, האנציקלופדיה החופשית

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

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

Refactoring יכול להיעשות במספר טכניקות:

  • מחיקת שכפולים בקוד ומעבר לפונקציות המבצעות פעולות סדרתיות החוזרות על עצמן
  • מתן שמות משמעותיים למשתנים או פונקציות
  • מעבר לשימוש במחלקות - מעבר לתכנות מונחה עצמים
  • מחיקת קוד מיותר
  • שינוי ייצוג המשתנים - לדוגמה: בשפת python ניתן לחסוך פי 2 במקום על ידי מעבר מייצוג int64 לint32 כאשר מזהים שאין צורך ב64 סיביות לתוכן הספציפי של הנתונים.

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

תהליך ה-Refactoring מורכב משלושה שלבים:

  1. זיהוי נקודות פוטנציאליות ל-Refactoring
  2. החלת טכניקת ה-Refactoring הרלוונטית לאותה נקודה
  3. בדיקה שההתנהגות החיצונית של הקוד לא השתנתה

יתרונות Refactoring לעומת בניית הקוד מחדש:

  • Refactoring אורך פחות זמן באופן משמעותי מתכנות מחדש, בהנחה שהאדם שמבצע את השינוי מכיר היטב את הקוד ואת הפונקציונליות שלו
  • המשך שיווק התוצר בכל שלב
  • לו"ז צפוי (לאחר הערכה על פי קטע קוד קטן)

בעבר לא בוצע ארגון הקוד מחדש בשלבי פיתוח. דוגמה לכך, היא קובצי CVS (משנת 1984) אשר אינם כוללים תיעוד של שינוי או העברה של קבצים ותיקיות.

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

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

השימוש הידוע הראשון במושג "Refactoring" בספרות היה בספטמבר 1990, במאמר של ויליאם פ. אופדיק וראלף א. ג'ונסון. בתזה של אופדיק שפורסמה ב-1992, הוא השתמש שנית במונח זה. מונח ה-Refactoring היה בשימוש בשפת התכנות Forth מאז שנות השמונים המאוחרות של המאה ה-20. פרק שש בספרו של ליאו ברודי מוקדש לנושא זה. בשיטת ה-eXtreme Programming, חילוץ מתודה בשיטת ה-Refactoring הוא נחוץ כמו ב-Forth, שבירת המתודה למתודות קטנות יותר.

קישורים חיצוניים

[עריכת קוד מקור | עריכה]