Refactoring

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

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

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

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

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

תהליך ה-Refactoring מורכב משלושה שלבים:
 זיהוי נקודות פוטנציאליות ל-Refactoring.
 החלת טכניקת ה-Refactoring הרלוונטית לאותה נקודה.
 בדיקה שההתנהגות החיצונית של הקוד לא השתנתה.

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

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

 ראו גם 
 סיבוכיות קוד

 קישורים חיצוניים 
 Visual Studio Express–יכולות Refactoring
 Sniff Out That Smelly Code
 צחצח והברק מאת יואל ספולסקי
 הגדרה של Refactoring - מאת וייס שי
 הנדסת תוכנה - Refactoring - שקף 67 בהרצאה בנושא עבודה עם קוד קיים - מאת ראובן יגל

קטגוריה:תכנות