Java:
רפקטורינג

איך לעשות:

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

public class Calculator {
    public int calc(int op1, int op2, String operation) {
        if (operation.equals("add")) {
            return op1 + op2;
        } else if (operation.equals("subtract")) {
            return op1 - op2;
        } // פעולות נוספות...
    }
}

לאחר הריפקטורינג, יש לנו:

public class Calculator {
    public int add(int operand1, int operand2) {
        return operand1 + operand2;
    }

    public int subtract(int operand1, int operand2) {
        return operand1 - operand2;
    }

    // פעולות נוספות...
}

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

צלילה עמוקה:

ריפקטורינג הוא בעל שורשים בקהילת ה-Smalltalk, עם הדגש על קריאות הקוד ועיצוב מונחה-עצמים, אך הוא באמת פרח בעולם ה-Java בסוף שנות ה-90 ותחילת שנות ה-2000, בפרט לאחר פרסום הספר החשוב של מרטין פאולר, “ריפקטורינג: שיפור עיצוב קוד קיים”.

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

פרטי היישום כאשר מבצעים ריפקטורינג ב-Java (או בכל שפת תכנות) כרוכים בהבנת ריחות קוד - אינדיקטורים לבעיות עמוקות יותר בקוד. חלק מהריחות כוללים שיטות ארוכות, מחלקות גדולות, קוד כפול, ושימוש יתר בפרימיטיבים. על ידי החלת דפוסי ריפקטורינג כגון Extract Method, Move Method, או Replace Temp with Query, מפתחים יכולים לטפל באופן מסודר בריחות אלה תוך כדי הבטחת התפקוד התקין של הקוד בכל עת.

כלים אוטומטיים, כמו תמיכת הריפקטורינג של IntelliJ IDEA, או תוספים ל-Eclipse, יכולים לסייע בתהליך על ידי אוטומציה של פעולות ריפקטורינג כמו שינוי שמות של משתנים, שיטות, ומחלקות, חילוץ שיטות או משתנים, והעברת שיטות או מחלקות לחבילות או מרחבי שמות שונים.

ראה גם:

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